Я хотел сделать следующую функцию в MATLAB:
f(x,y) = sqrt(1-x^2-4y^2) ,(if (x^2+4*y^2) <=1)
ошибка отображения 3-D Plot в MATLAB
= 0 ,otherwise.
Я написал следующий код в MATLAB:
x=0:0.1:10;
y=0:0.1:10;
z=x.^2+4*y.^2;
if (z <=1)
surf(x,y,z);
else
surf(x,y,0);
end
но появляется следующая ошибка:
surface: rows (Z) must be the same as length (Y) and columns (Z) must be the same as length (X)
Как избежать этой ошибки ...
Будучи новым для MatLab, я действительно дон Не понимаю, почему мы создаем x-сетку и y-сетку здесь ... Я не понял ... не могли бы вы помочь с этим. – coool
@coool. Это не Matlab конкретным. «Поверхность» должна определяться как значение Z по сравнению с двумерной плоскостью координат. Вы не можете определить поверхность на строке. Посмотрите документацию ['surf'] (http://www.mathworks.co.uk/help/matlab/ref/surf.html), а также вы можете прочитать о [Создание сетки и поверхностных сюжетов] (http : //www.mathworks.co.uk/help/matlab/learn_matlab/creating-mesh-and-surface-plots.html) – Hoki
@coool для поверхностного графика, который вы хотите вычислить для z на каждом (x, y). Это означает, что z будет матрицей. Чтобы сделать это, используя умножение по типу '. *', Вам нужно иметь матрицы для x, y. 'meshgrid' создает матрицы для ваших векторов' x' и 'y'. Фактически, он просто повторяет вектор x в направлении y и наоборот. Пожалуйста, посмотрите ссылку @Hoki, упомянутую в комментариях. – Nick