Help sketching equation into 3d graph
이전 댓글 표시

What I got so far for the equation
Z=5-sqrt(1-x.^(2)-(y-abs(x)).^2).*cos(30.*(1-x.^(2)-(y-abs(x)).^(2)))
Then I tried these lines
x=linspace(-1,1, 200);
y=linspace(-1, 1.5, 200);
[X,Y]=meshgrid(x,y);
Z=5-sqrt(1-x.^(2)-(y-abs(x)).^2).*cos(30.*(1-x.^(2)-(y-abs(x)).^(2)))
zlim([1,6]);
surf(X,Y,Z);
It gave me "Z must be a matrix, not a scalar or vector." error.
채택된 답변
추가 답변 (2개)
Joseph Cheng
2021년 6월 1일
what you'll need to do is use the function meshgrid() which will then create a 2D matrix for both x and y such that you can get the pair combination of x and y of your linspace
[x y]=meshgrid(x,y);
%then do your Z
댓글 수: 2
Joseph Cheng
2021년 6월 1일
As right now
x = 1x200 matrix
y = 1x200 matrix
so since you're using .* and .^ in your Z equation you'll also get a 1x200 for Z.
using meshgrid to generate the 2D grid of x and y combinations such that you can get the range of Z values for x between -1 and 1 and y over the range of -1 and 1.5.
Muhd Farhad
2021년 6월 1일
Girijashankar Sahoo
2021년 6월 1일
1 개 추천
% Size of of your output Z must be 200x200 matix
% Try this code for 3D output
x=linspace(-1,1, 200);
y=linspace(-1, 1.5, 200);
for i=1:length(y)
for k=1:length(x)
Z=5-sqrt(1-x.^(2)-(y-abs(x)).^(2).*cos(30*(1-x.^(2)-(y-abs(x)).^(2))));
end
end
zlim([1,6]);
T=rand(200)
surf(x,y,T);
카테고리
도움말 센터 및 File Exchange에서 Mathematics에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


