2021-08-27

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函数可以将图形某一表面进行投影

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值