Я строю контуры 2D matrix
в Matlab
.
По умолчанию контуры лежат на плоскости (x, y). Также по умолчанию плоскость (x, y) расположена на вертикальном уровне z = 0 в 3D space
.
Я ищу решение для отображения 2D среза на плоскости (y, z) со значением x по моему выбору. То есть я пытаюсь отобразить 2D-горизонтальный срез в виде «вертикальной завесы», положение которой на оси х я выбираю.
Я попытался создать 2D grid
и добавить к нему третью сетку на выбранном уровне x:
[y,z] = meshgrid(coord1,coord2); % the 2D grid
xlevel = 2;
x = xlevel.*ones(size(y)); % the third grid
Мне удалось успешно использовать эту сетку для отображения данных, используя:
surf(x,y,z,data)
Это дает нужный мне результат, но это surf
график, а не contourf
график. Функция contourf
выдает следующее сообщение об ошибке при наличии тех же аргументов:
contourf(x,y,z,data)
Ошибка использования контура (строка 61)
Значения уровня контура должны быть векторными или скалярными.
потому что третий аргумент (z
) обрабатывается как данные для отображения, а четвертый аргумент (data
) обрабатывается как значение отображаемых контуров / изолиний (именно здесь создается сообщение об ошибке).
По непонятной мне причине следующее не выдает сообщение об ошибке (но тоже ничего не отображается):
contourf(x,y,z,data,30)
Есть идеи использовать contourf
для достижения того же результата, что я получаю с surf
?