Z must be a matrix, not a scalar or vector
3 views (last 30 days)
Show older comments
clc
clear all
R=10;
f=0.5;
s=50;
N=36;
a=f/(s*N);
Ax=0.002;
Ay=0.002;
lx=2.5;
ly=2.5;
n=((R*s*N)/f)+1;
for i=1:n
r(i)=(R-((i-1)*a));
theta(i)= ((i-1)*(2*pi/N));
x(i)=(r(i)*cos(theta(i)));
y(i)=(r(i)*sin(theta(i)));
[xx(i),yy(i)]=meshgrid(x(i),y(i));
Z(i)=((Ax*cos(2*pi*xx(i)/lx))+(Ay*cos(2*pi*yy(i)/ly)));
end
surf(xx,yy,Z);
2 Comments
Accepted Answer
Matt J
on 17 Aug 2021
Edited: Matt J
on 17 Aug 2021
R=10;
f=0.5;
s=50;
N=36;
a=f/(s*N);
Ax=0.002;
Ay=0.002;
lx=2.5;
ly=2.5;
n=((R*s*N)/f)+1;
for i=1:n
r(i)=(R-((i-1)*a));
theta(i)= ((i-1)*(2*pi/N));
x(i)=(r(i)*cos(theta(i)));
y(i)=(r(i)*sin(theta(i)));
% [xx(i),yy(i)]=meshgrid(x(i),y(i));
Z(i)=((Ax*cos(2*pi*x(i)/lx))+(Ay*cos(2*pi*y(i)/ly)));
end
T=delaunayTriangulation(x(:),y(:));
trisurf(T.ConnectivityList,x(:),y(:),Z(:),'EdgeColor','none','FaceAlpha',0.6);
view(-80,75)
4 Comments
Matt J
on 17 Aug 2021
You're welcome, but please Accept-click the answer to indicate that it worked.
More Answers (1)
Kundan Prasad
on 18 Aug 2021
10 Comments
Walter Roberson
on 19 Aug 2021
R=10;
f=0.5;
s=50;
N=100;
a=f/(s*N);
Ax=2;
Ay=2;
lx=2.5;
ly=2.5;
n=((R*s*N)/f)+1;
roff = 1;
Zoff = 1;
r(0+roff)=0;
Z(0+Zoff)=0;
t=0.1;
Pi = (pi);
for i=1:n
r(i+roff)=(R-((i-1)*a));
theta(i)= ((i-1)*(2*Pi/N));
x(i)=(r(i+roff)*cos(theta(i)));
y(i)=(r(i+roff)*sin(theta(i)));
Z(i+Zoff)=((Ax*cos(2*Pi*x(i)/lx))+(Ay*cos(2*Pi*y(i)/ly)));
m(i) = ((Z(i-1+Zoff) - Z(i+Zoff))./(r(i-1+roff)-r(i+roff)));
newth(i) = atan(-m(i));
G(i)=r(i+roff)-(t*sin(newth(i)));
H(i)=Z(i+Zoff)+(t*cos(newth(i)))-t; %% THE compensate value of G and H
% needed to calculate from the previous value of r(i) and Z(i)
end
T=delaunayTriangulation(x(:),y(:));
trisurf(T.ConnectivityList,x(:),y(:),H(:),'EdgeColor','none','FaceAlpha',0.6);
view(-80,75)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!