Matlab三维绘图

%% 1.三维线图绘制plot3()
%% 2.三维网格指令
%% 3.三维曲面指令
%% 4.色图
%% 5.三维表面图形色彩的浓淡处理
%% 6.图形的镂空和裁切
%% 7.图像读写
%% 8.播放动画
%% 9.三维简易绘图指令
%% 10.三维直方图
%% 11.三维扇形图的绘制
%% 12.离散杆图






% 1.三维线图绘制plot3()


t=linspace(0,5*pi,100);
x=t;
y=cos(t);
z=sin(t);
plot3(x,y,z,'g-p');%三维线图绘制指令,用法同plot()
xlabel('x');
ylabel('y');
zlabel('z');


% 2.三维网格指令


x=linspace(0,4,30);
y=linspace(0,3,20);
[X,Y]=meshgrid(x,y);%创建网格指令,X、Y均为m x n维,将x、y分别复制给X的行元素,Y的列元素,meshgrid(x)等价于meshgrid(x,x)
                    %meshgrid创建的网格坐标X、Y以及由他们计算出来的Z,各列或各行对应于一条空间曲线,空间曲线的集合组成空间画面                     
Z=X.^2+Y.^2;
mesh(X,Y,Z);%网格绘制指令
xlabel('x');
ylabel('y');
zlabel('z');
title('三维网格函数绘图');
x=linspace(0,2*pi,200);
y=x;
[X,Y]=meshgrid(x,y);
Z=sin(X).*cos(Y);
Z=meshc(X,Y,Z);%绘制带有轮廓线的三维网格图,同 mesh() 函数功能、用法一样


% 3.三维曲面指令


x=linspace(-pi,pi,30);
[X,Y]=meshgrid(x);  %创建网格点坐标
Z=2*(X+Y)*exp(-(X.^2+Y.^2)/2);
subplot(2,2,1);
surf(X,Y,Z);    %三维曲面图绘制指令
title('曲面图');
colormap(autumn);%曲面颜色控制指令
subplot(222);
surfc(X,Y,Z);  %绘图的时候多了条网格线,用法同surf
title('带轮廓线的曲面图');
subplot(223);
mesh(X,Y,Z);
title('曲面图');
subplot(224);
contour3(X,Y,Z,10);%绘制10条三维等高线
title('三维等高图');


% 4.色图


[x,y]=meshgrid(-2:0.1:2,-1:0.1:1);
z=sqrt(x.^2+y.^2);
surf(z);
colormap([0 1 0]);%设置色图,矩阵的值代表rgb三色的分量
colormap(hot(128));%重新设置色图
cmap=colormap;%获取当前色图矩阵


% 5.三维表面图形色彩的浓淡处理


x=linspace(-pi,pi,30);
[X,Y]=meshgrid(x);
Z=X.*exp(-(X.^2+Y.^2)/2);
%surf(Z);%此处用于显示原图
subplot(1,3,1);
surf(X,Y,Z);
title('shading faceted');%默认显示方式故省略,立体表现最强
subplot(1,3,2);
surf(X,Y,Z);
shading flat;%浓淡处理,平滑
title('shading flat');
subplot(1,3,3);
surf(X,Y,Z);
shading interp;%浓淡处理,很平滑
title('shading interp');


% 6.图形的镂空和裁切


x=linspace(-2,2,20);
[X,Y]=meshgrid(x);
Z=sin(X).*cos(Y);
Z1=Z;
Z2=Z;
Z1(12:16,3:5)=NaN;%给需要缕空部分的数据赋值实现缕空
subplot(1,2,1);
surf(X,Y,Z1);
title('缕空图');
ii=find(abs(X)>1.5|abs(Y)>1.5);
Z2(ii)=0;     %给需要剪切部分赋值为零,实现数据个
subplot(122);
surf(X,Y,Z2);


% 7.图像读写


[X,cmap]=imread('F:\\1.jpg');%读入图像,第一个参数为图像的数据矩阵、第二个参数为图像的伴随颜色
image(X);%显示图像
colormap(cmap); %显示图像的伴随颜色
imwrite(X,'E:\\ts.jpg','Quality',100);%存储图像
image(imread('ts.jpg'));
axis image off;%隐藏坐标系


% 8.播放动画


[X,Y,Z]=sphere(40);%此函数生成三个(n+1)×(n+1)阶的矩阵,再利用函数surf(x,y,z)可生成单位球面,默认值20
h=surf(X,Y,Z);
% colormap(jet);%颜色设置
% shading interp;%下面的是灯光设置
% light,lighting flat;
% light('position',[-1,-1,-2],'color','r');
% light('position',[-1,0.5,1],'style','local','color','g');
axis off %关闭坐标轴显示
for i=1:10
    rotate(h,[0,0,1],30);%图像绕z轴旋转,转速为30度/s
    mmm(i)=getframe;%获取图像数据
end
movie(mmm,8,10);%以每秒10帧速度播放8次


% 9.三维简易绘图指令


ezplot3('sin(t)','cos(t)','sin(t)*cos(t)',[0,3*pi]);%绘制x=sin(t)、y=cos(t)、z=sin(t)*cos(t)的图像,
                                                        % 最后一个参数为t的取值范围,默认[0,2pi]
ezsurf('(x.^2-2*x)*exp(-x.^2-y.^2)',[-2,2,-2,2]);%简易网面图绘制,-2<x<2,-2<y<2
ezmesh('sin(x)*cos(y)+sin(x)',[-3,3,-3,3]);%简易绘图,-3<x<3,-3<y<3,缺省时x、y∈[-2pi,2pi]
ezmesh('sin(t)*cos(s)','cos(2*t)+sin(s)','t-s',[-pi,pi,-pi,pi]);%参数方程式绘图,-pi<s<pi,-pi<t<pi,缺省时s、t∈[-2pi,2pi]


% 10.三维直方图


Z=magic(3);
subplot(1,2,1);
bar3(Z,1,'stacked');%绘制 m x n 矩阵z的三维直方图,向量y默认为1:m,第二个参数用来指定竖条的宽度(默认0.8)
                    %如果宽度大于1则重合,最后一个参数表示显示模式,这里是累加式显示(还有detached分离式、grouped分组式)
xlabel('x');
ylabel('y');
zlabel('z');
title('竖直三维直方图');
subplot(122);
bar3h(Z');%默认为分组式显示,用来绘制三维水平直方图
xlabel('x');
ylabel('y');
zlabel('z');
title('水平三维直方图');


% 11.三维扇形图的绘制


y=[1 5 7 2 3 6];
explode=[0 0 1 1 0 0];
subplot(1,2,1);
pie(y,explode);%二维扇形图
legend('a','b','c','d','e','f');
subplot(122);
pie3(y,[0 0 1 1 0 0]);%三维扇形图


% 12.离散杆图


t=linspace(0,2*pi,72);
x=sin(t);
y=cos(t);
z=abs(sin(6*t));
stem3(x,y,z,'filled','r');%离散杆状图绘制函数
hold on;
plot3(x,y,z,'g-');
hold off;


% 范围图解
ezmesh('-sqrt((sqrt(x.^2+y.^2)-1).^2-4)');
hold on;
ezmesh('-sqrt(9-x.^2-y.^2)');
ezmesh('sqrt((sqrt(x.^2+y.^2)-1).^2-4)');
ezmesh('sqrt(9-x.^2-y.^2)');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值