MATLAB学习笔记
进阶绘图
1特殊的plot绘图方法
对数图:
x=logspace(-1,1,100); #产生100个由10^-1到10^1的一维向量
y=x.^2;
sunplot(2,2,1);
plot(x,y);
title('plot');
semilogx(x,y); #对x,y中的x取对数
title('semilogx');
subplot(2,2,2);
semilogy(x,y); #对y取对数
title('semilogy');
subplot(2,2,3);
loglog(x,y); #对xy同时取对数
title('loglog');
输入以上代码所出现的预期图形
通过
set(gca,'XGrid','on') #开启图形中的网格
产生不同的y系坐标轴
plotyy():
x=0:0.01:20
y1=200*exp(-0.05*x).*sinx;
y2=0.8*exp(-0.5x).*sin(10x);
[AX,H1,H2]=plot(x,y1,x,y2); #在进行plot行为的同时,axe,line的句柄分别赋予给了AX.H1.H2
set(get(AX(1),'Ylabel'),'string','left y-axis');
set(get(AX(2),'Ylabel'),'string',right y-axis'); #分别建立起两条不同的轴
title('labeling plotyy');
set(H1,'LineStyle','--'); set(H2,'LineStyle',':');
得到下图
histogram
y=randn(1,1000);
sybplot(2,1,1);
hist(y,10); #产生10个bins,每个bins的高度以y值衡量
title(‘Bins=10');
hist(y,50);
title('bins=50');
得到正态分布图像
bar chats
x=[1 2 5 4 8];y=[x;1:5];
subplot(1,3,1); bar(x);
subplot(1,3,2); bar(y);
subplot(1,3,3); bar3(y);
通过上述代码来进行bar chats的绘制(柱状图)
pie chat
a=[10 5 20 30];
subplot(1,3,1); pie(a);
subplot(1,3,2); pie(a,[0 0 0 1]) #前三个与最后一个产生间隔
subplot(1,3,3); pie3(a,[0 0 0 1]) #3d绘制方法
图形如下
plor chat
类似于极坐标的画图方法 ,给出每个点的角度以及半径从而确定点的位置
x=1:100;theta=x/10;r=log10(x);
subplot(1,4,1); polar(theta,r);
theta=linspace(0,2*pi); r=cos(4.*theta);
theta=linspace(0,2*pi,6); r=ones(1,lengtthe(theta)); #产生一个一维长度为六的向量
subplot(1,4,3); polar(theta,r);
得到下图
楼梯画图与间隔频率画图
x=linspace(0,4*pi,40); y=sin(x);
subplot(1,2,1); stairs(y);
subplot(1,2,2); stem(y);
得到
权重与误差区间
x=0:pi/10:pi; y=sin(x)
e=std(y)*ones(size(x))
errorbar(x,y,e);
得到
2fill函数
普通的plot函数只是将所有的点串联起来从而获得图像,但利用fill函数我们可以将图形内部以各种颜料进行填充,下面以绘制stop图形为例
t=(1:2:15)*pi/8; x=sin(t); y=cos(t);
fill(x,y,'r'); axis square off; #关闭坐标轴的显示,以红色填充图形
text(0,0,'stop','Color','w','FontSize',80, ...
'FontWeight','bold','HorizontalAlignment','center')
得到
填充的方法根据rgb的值进行调整,对照rgb表格,可以进行查找
3用image方法来直观的表现某些函数
[x,y]=meshgrid(-3:.2:3,.2:3);
z=x.^2+x.*y+y.^2; surf(x,y,z); box on
set(gca,'FontSize',16);zlabel('z');
xlim([-4 4]); xlabel('x'); ylim([-4 4]); ylabel('y');
imagesc(z); axis square; xlabel('x'); ylabel('y');
得到
通过colormap我们可以直观感受到色彩在数值上的差异,而其实质是一个定义完成完成的矩阵,每个一位置都对应一个元素
直接访问colormap我们将获得这个矩阵
3d进阶画图
利用plot()函数输入三个变量即可实现
怎样对画出的3d图形的表面进行色彩的填充
首先要了解其基本原理:在普通plot3函数中是将对应的具有三个维度坐标的点进行连接,而在surface函数中,x,y坐标构成了一张数据网格,对应z的值网格某一单元拉伸或压缩形成图像,我们要做的就是对这些变形的网格中进行颜色的填充
x=-3.5:0.2:3.5; y=-3.5:0.2:3.5;
[X,Y]=meshgrid(x,y); #产生网格状数值
Z=X.*exp(-X.^2-Y.^2);
subplot(1,2,1); mesh(X,Y,Z);
subplot(1,2,2); surf(X,Y,Z);
得到
利用contour函数可以将图形某一表面进行投影