Использование surf
требует Z
в качестве матрицы. Это легко исправить с помощью таких функций, как meshgrid
(также полезно griddata
).
Использование meshgrid
делает использование surf
очень доступным.
Но и Z
, и Y
являются просто функциями X
, поэтому я не могу объяснить, почему значение Z
вашего графика будет меняться как с X
, так и с Y
. Из перечисленных вами аналитических (математических) уравнений значение Z
должно быть постоянным в Y
-размерности.
stepsize = 1; % use 10 for cleaner look
x = 0:stepsize:720;
y = sind(x);
[X,Y] = meshgrid(x,y);
Z = cosd(X);
surf(X,Y,Z)
Обратите внимание, что линии контура прямые и параллельные в измерении Y
(с использованием surfc(X,Y,Z)
).
Другой метод заключается в циклическом прохождении элементов x
(проиндексированных i
) и y
(проиндексированных j
), где оба x
и y
(векторы) для вычисления Z(i,j)
, где Z
- это матрица. Из-за назначения по умолчанию для строк и столбцов этот метод требует транспонирования матрицы Z
, такой как surf(X,Y,Z.')
.
Похожие сообщения:
Как я могу построить функцию с двумя переменными в октаве или матлабе?
MATLAB участок участка поверхности