#matlab #plot #matlab-figure
Вопрос:
Я хочу построить 3D-график z=sqrt(1-x^2-y^2)
для региона x^2 y^2<=1
в MATLAB.
clear all;
clc;
x=-1:0.05:1;
y=-1:0.05:1;
[X,Y]=meshgrid(x,y);
Z=sqrt(1-X.^2-Y.^2);
mesh(X,Y,Z);
Я не знаю , как определить область x^2 y^2<=1
, потому что в mesh
мы не можем определить область функции. Как это определить?
Ответ №1:
Вот одно решение (протестировано в Октаве, но должно работать в MATLAB). Я масштабирую значения X
и Y
, чтобы они лежали на едином диске.
clear all;
clc;
x=-1:0.05:1;
y=-1:0.05:1;
[X,Y]=meshgrid(x,y);
R = sqrt(1 (min(abs(X),abs(Y))./max(abs(X),abs(Y))).^2);
R(R==0) = 1;
X = X ./ R;
Y = Y ./ R;
Z = real(sqrt(1-X.^2-Y.^2));
mesh(X,Y,Z);