1 view (last 30 days)

Show older comments

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.

Star Strider
on 1 Jun 2021

The error it throws when I run it here is:

X, Y, Z, and C cannot be complex

This is likely because of the negative values in ‘x’ and ‘y’, however I did not do an in-depth analysis.

Dealing with that produces —

x=linspace(-1,1, 200);

y=linspace(-1, 1.5, 200);

[X,Y]=meshgrid(x,y);

Z=@(x,y) 5-sqrt(1-x.^(2)-(y-abs(x)).^(2).*cos(30*(1-x.^(2)-(y-abs(x)).^(2))));

figure

surf(X,Y,real(Z(X,Y)))

grid on

zlim([1,6])

title('Real Z')

figure

surf(X,Y,imag(Z(X,Y)))

grid on

% zlim([1,6])

title('Imag Z')

figure

surf(X,Y,abs(Z(X,Y)))

grid on

zlim([1,6])

title('|Z|')

figure

surf(X,Y,Z(X,Y))

grid on

zlim([1,6])

title('Complex Z')

.

Joseph Cheng
on 1 Jun 2021

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

Girijashankar Sahoo
on 1 Jun 2021

% 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);

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!