matlab画二次曲面方程,谁能帮我解释一下这个代码?

这是原题:

这是两个代码,画出来的图好像不一样。。。也不知道哪个对哪个错。。。

第一个:
A=input('A=');for i=1:4 figure(i) a=A(1,i); b=A(2,i); c=A(3,i); d=A(4,i); [x,y,z]=meshgrid(linspace(-5,5,50)); f=@(x,y,z)x.^2/a^2+y.^2/b^2+z.^2/c^2-d; val=f(x,y,z); [p,v]=isosurface(x,y,z,val,0); patch('faces',p,'vertices',v,'facevertexcdata',jet(size(v,1)),'facecolor','w','edgecolor','flat'); hold on;view(3);grid on;axis equalend 第二个:A=input('A=');syms theta fai;[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi);for i=1:4 figure(i) a=A(1,i); b=A(2,i); c=A(3,i); d=A(4,i); x=a/d*sin(fai).*cos(theta); y=b/d*sin(fai).*sin(theta); z=c/d*cos(fai); mesh(x,y,z) hold on;view(3);grid on;axis equal;end但是完全看不懂啊!!!!我们要做实训报告,有木有大神能挨句解释一下代码?小妹在此跪谢!!!

第1个回答  2014-09-12
第1个程序错了。
第二个我帮你改了一下。
A=input('A='); % 或者直接输数据 例如: A=[1 5 9 13; 2 6 10 14; 3 7 11 15; 4 8 12 16];
[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi);
for i=1:4
figure(i)
a=A(1,i);
b=A(2,i);
c=A(3,i);
d=A(4,i);
x=a/d*sin(fai).*cos(theta);
y=b/d*sin(fai).*sin(theta);
z=c/d*cos(fai);
mesh(x,y,z)
hold on;
view(3);
grid on;
axis equal;
end追问

恩谢谢啦!不过能不能麻烦把每一行代码解释一下, 比如这是什么函数啊干什么用的啊输入什么啊范围是什么啊之类的。。。因为我们要写实训报告,但是真心不懂这个TAT

追答

书多的是。网上也不缺。学生!
A=input('A='); % 或者直接输数据 例如: A=[1 5 9 13; 2 6 10 14; 3 7 11 15; 4 8 12 16];
[theta,fai]=meshgrid(-pi:0.1:pi,0:0.1:pi); % 生成极坐标下 2维网格点矩阵
for i=1:4 %循环4次
figure(i) % 生成图形窗口i
a=A(1,i); % 赋值
b=A(2,i);
c=A(3,i);
d=A(4,i);
x=a/d*sin(fai).*cos(theta); %把 极坐标转换成直角坐标
y=b/d*sin(fai).*sin(theta);
z=c/d*cos(fai);
mesh(x,y,z) % 做网格图
hold on; % 保留原图
view(3); % 视角
grid on; % 加网格线
axis equal; % 等坐标刻度
end

本回答被提问者和网友采纳
相似回答