作业帮 > 综合 > 作业

matlab surf画三维图的问题

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/28 11:27:13
matlab surf画三维图的问题
n=4;
c=3e8;
f=30e6;
lamda=c/f;
beta=2*pi/lamda;
d=0.5*lamda;
alpha=0;
a=linspace(0,2*pi);
b=linspace(0,pi);
psi=beta*d*cos(a)+alpha;
Fa=abs(sin(n*psi/2)./(n*sin(psi/2)));
z=Fa.*cos(a);
x=(Fa.*sin(a)).*cos(b);
y=(Fa.*sin(a)).*sin(b);
surf(x,y,z)
axis equal
错误代码是这个,正确的是
z=(Fa.*cos(a))'*ones(size(b));
x=(Fa.*sin(a))'*cos(b);
y=(Fa.*sin(a))'*sin(b);
surf(x,y,z)
求高手解释下这两段代码的区别
matlab surf画三维图的问题
z=Fa.*cos(a);
x=(Fa.*sin(a)).*cos(b);
y=(Fa.*sin(a)).*sin(b);%%错误代码中z,x,y的大小为1*100
surf要z是方阵,不能是1列或者1行.当X 和 Y 一维向量时, length(X) = n 和 length(Y) = m, 那么 [m,n] = size(Z),这是surf的要求,对应位置的值为(X(j), Y(i), Z(i,j));当X和Y是矩阵时,同样的要求,且对应位置的值为(X(i,j), Y(i,j), Z(i,j)).
那么当i=50,j=50时,z(50,50)是没有值的,所以出错.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
z=(Fa.*cos(a))'*ones(size(b));
x=(Fa.*sin(a))'*cos(b);
y=(Fa.*sin(a))'*sin(b);
surf(x,y,z)
该代码中z,x,y的大小都为100*100,那么矩阵元素位置一一对应,画图正确.