一个matlab高手十年编程经验的吐血推荐之图形可视化
figure
>> x=-10:0.2:10;
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> z=(sqrt(X.^2+Y.^2)<6).*(sqrt(6^2-X.^2-Y.^2))+(sqrt(X.^2+Y.^2)>6|sqrt(X.^2+Y.^2)==6).*(-1).*((X.^2+Y.^2)/45);
>> colordef black;
>> surfl(x,y,z,[1,1,1],[0.55,0.8,0.1,0.1])
>> shading faceted
>> light('position',[0,0,6])
>> rotate3d
>> view([1,1,1])
>> camlight
>> colormap autumn
>> colorbar
>> box off
>> grid off
>> xlabel('x轴');ylabel('y轴');zlabel('z轴');
>> material shiny
>> lighting phong
x=0:0.1:2*pi;
y=x;
[X,Y]=meshgrid(x,y);
z=cos(X.^2).*(sin(Y)).^2;
surf(X,Y,z)
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('\it z=cos(x^{2})*(sin(y))^{2}')
pause
view(0,180)
title('视角位置(0,180)')
hold off
pause
view(180,0)
title('视角位置(180,0)')
pause
view(0,90)
title('视角位置(0,90)')
pause
view(90,0)
title('视角位置(90,0)')
[x,y]=meshgrid(-10:0.2:10);
>> z=sqrt(x.^2+y.^2)+eps;
>> Z=sin(z)./z;
>> mesh(x,y,Z,'EdgeColor','black')
mesh(x,y,Z,'EdgeColor','green')
plot(plot::Function3d(sin(x + a)*sin(y - a), x = 0 .. PI,
y = 0..PI, a = 0..PI))
plot(plot::Implicit3d((x^2 + y^2)^2 + z^4 - y,x = -1.5..1.5,y = -1.5..1.5, z = -2..2),Scaling = Constrained)
各位大神,想做(x^2 + (9/4)y^2 + z^2 - 1)^3 - x^2z^3 - (9/80)y^2z^3 == 0函数的图该怎么编程啊谢谢这是一个三维隐函数,没有显式表达式,无法通过Matlab现成的3-D画图函数 surf 或 mesh画图。遗憾的是,Matlab 没有提供的3维隐函数画图函数,所以无法直接画。下面给出两种办法:1. Mupad符号引擎里提供了三维隐函数画图函数在matlab里开启Mupad的方法是:在command window 里输入 mupad 来启动一个notebook。在启动的notebook里再输入如下代码:
plot(plot::Implicit3d((x^2 + (9/4)*y^2 + z^2 - 1)^3 - x^2*z^3 - (9/80)*y^2*z^3, x = -1.5..1.5, y = -1.5..1.5, z = -1.5..1.5), Scaling = Constrained)
复制代码
回车后得到如下图形:?(Mupad专注与符号计算,代替了Matlab早起的符号引擎Maple)2. 通过 ezimplot3 实现由于matlab没有提供专门的3维隐函数画图函数,在 matlab central 的 file exchange 上有一个非常优秀的绘制3维隐函数的绘图函数,叫 ezimplot3。感兴趣的可以在:/matlabc ... d-functions-plotter?下载。为了方便大家下载,我特地把 ezimplot3.zip 也上传到这里 :?ezimplot3.zip?(3.75 KB, 下载次数: 89)?ezimplot3 使用方法:解压ezimplot3.zip,将解压得到的 ezimplot3.m 添加到matlab当前搜索路径后就可以使用了。有了??ezimplot3,我们可以直接在 command window 输入:
f = @(x,y,z) (x^2 + (9/4)*y^2 + z^2