用MATLAB定义两个函数 然后进行调用 要求40行 求助大神帮助

可以的话会进行追加100分!!!
这个太复杂了啊大神,能不能稍微基础一点的,三维的我们都没学

只要有两个函数、40行以上就行,对功能没有要求?
试一试下面这个(四个函数):

function zd506947100
while 1
method = menu('用不同的方式画心形','三维网格图','二维心形曲线','三维曲面(带光照效果)','退出');
switch method
case 1,
heart_1
case 2,
heart_2
case 3,
heart_3
otherwise
break;
end
end

function heart_1
figure(101)
step = 0.05;
[X Y Z] = meshgrid(-3:step:3, -3:step:3, -3:step:3);
F=((-(X.^2).*(Z.^3)-(9/80).*(Y.^2).*(Z.^3))+((X.^2)+(9/4).*(Y.^2)+(Z.^2)-1).^3);
p = patch(isosurface(X,Y,Z,F,0,Z));
set(p,'facecolor','none','EdgeColor','interp');
colormap(hsv)
daspect([1 1 1])
view(3)
axis tight
axis equal
axis off

function heart_2
% 二维心形图
figure(102)
ezplot('(x^2-1+y^2)^3-x^2*y^3')
axis([-2.5 2.5 -2 2])

function heart_3
% 三维心形图
figure(103)
n=100;
x=linspace(-3,3,n);
y=linspace(-3,3,n);
z=linspace(-3,3,n);
[X,Y,Z]=ndgrid(x,y,z);
F=((-(X.^2) .* (Z.^3) -(9/80).*(Y.^2).*(Z.^3)) + ((X.^2) + (9/4).* (Y.^2) + (Z.^2)-1).^3);
isosurface(F,0)
lighting phong
caxis;
axis equal
colormap('flag');
view([55 34]);
axis off追问

大神,这个太复杂了,三维的我们没学过啊,能不能给稍微基础一点的,如果好的话我会追加100分的

追答

你是没学过三维数组,还是三维绘图?其实并不难,稍微花点时间应该能看懂的。
如果看上面的实在有困难,请继续追问,我再帮你编个简单的。如果还有什么希望或要求,也请一并提出来。

追问

都没有学过~这个真的有点困难,麻烦你再帮我编个简单一点的吧,最基础的就行

追答

function zd506947100
while 1
Title = 'MATLAB二维图形展示';
plottype = { ...
'二维心形曲线'; ...
'直方图'; ...
'阶梯图'; ...
'误差图'; ...
'极坐标图'; ...
'离散序列图'; ...
};
type = menu(Title, plottype{:}, '退出');
if type == length(plottype)+1
break;
else
sub_plot2D(type);
end
end

function sub_plot2D(type)
figure(100+type);
switch type
case 1,
% 二维心形图
ezplot('(x^2-1+y^2)^3-x^2*y^3')
axis([-2.5 2.5 -2 2])
case 2,
% 直方图
x = -2.9:0.2:2.9;
bar(x,exp(-x.*x));
case 3,
% 阶梯图
x=0:0.25:10;
stairs(x,sin(x));
case 4,
% 误差图
x=-2:0.1:2;
y=erf(x);
e = rand(size(x))/10;
errorbar(x,y,e);
case 5,
% 极坐标图
t=0:.01:2*pi;
polar(t,abs(sin(2*t).*cos(2*t)));
case 6,
% 离散序列图
x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
stem(x,y)
end

温馨提示:答案为网友推荐,仅供参考
相似回答