MATLAB学习——绘图与图形

2D绘图基础

函数 plot(x,y)

  • 调用前需要做的事情,限定横坐标x的范围与纵坐标y的值:
    例如:
    x 的限定属于 [初值:增值:终值]
    添加标签:xlabelylabel 函数
>> x=[0:0.1:10];
>> y=cos(x);
>> plot(x,y),xlabel('x'),ylabel('y')
>> 

在这里插入图片描述

函数fplot()

相比前面的函数,fplot()函数能够针对的函数更多,函数的分辨率有matlab自主选择,省去了增量
注意:在进行指数函数与三角函数进行相乘或除的运算时,不使用(*),而使用(.*),以后涉及到与三角函数进行计算时,都应该考虑到这一点,比如(.^

当一个函数是由二个或更多个函数相乘构成,别忘记在相乘时加上“.”以便告诉MATLAB 我们是对两个矩阵进行相乘。

>> fplot('exp(-2*t)*sin(t)',[0,5]),xlabel('x轴'),ylabel('y轴'),title('fplot函数测试')
警告: 以后的版本中将会删除 fplot 的字符输入。请改用 fplot(@(t)exp(-2.*t).*sin(t))> In fplot (line 105) 
>> fplot(@exp(-2*t).*sin(t),[0,5]),xlabel('x轴'),ylabel('y轴'),title('fplot函数测试')
 fplot(@exp(-2*t).*sin(t),[0,5]),xlabel('x轴'),ylabel('y轴'),title('fplot函数测试')
           ↑
错误: 圆括号或方括号不对称或异常。
 
>> fplot(@(t)exp(-2*t).*sin(t),[0,5]),xlabel('x轴'),ylabel('y轴'),title('fplot函数测试')
>> 

在这里插入图片描述

对图像的更多修饰

(1)增加网格与调整坐标轴

  • 增加网格 grid on
  • 调整坐标轴
    axis square 产生正方形图像;axis equal产生两个坐标轴等比例和间距都相同的图像
    注意:tanh() 才是真正的 tan() 图形:
>> x= [-6:0.1:6];
>> y = tanh(x);
>> plot(x,y),grid on,axis equal

在这里插入图片描述

(2)在同一个图像中显示多个函数

  • 在同一个图像中显示多个函数
    以此为例:f(t) = e^-tg(t) = e^-2t 显示在同一图像之中
>> t = [0:0.01:6];
>> ft = exp(-t);
>> gt = exp(-2*t);
>> plot(t,ft,'-',t,gt,'--')

实线 '-'
虚线 '--'
虚点线 '-.'
点线 ':'

(3)添加图例和设置颜色

  • 添加图例 legend() 函数
  • 设置颜色
    》单独使用时,直接在plot()中加'r'(红色)和'b'(蓝色)等。
    》与线条样式一起使用时,'r:' 或者 'b--'
    》白色 w;黑色 k;蓝色 b;红色 r;青色 c;绿色 g;洋红 m;蓝色 y
>> t = [0:0.01:6];
>> ft = exp(-t);
>> gt = exp(-2*t);
>> plot(t,ft,':','r',t,gt,'-.','b'),xlabel('x'),ylabel('y'),legend('exp(-t)',' exp(-2*t)')

在这里插入图片描述

(4)设置坐标比例

  • 设置坐标比例
    axis ( [xmin xmax ymin ymax] )
    同样直接接到plot()函数后面
>> t = [0:0.01:6];
>> ft = exp(-t);
>> gt = exp(-2*t);
>> plot(t,ft,'r:',t,gt,'b-.'),xlabel('x'),ylabel('y'),legend('exp(-t)',' exp(-2*t)'),axis([0 5 -1 1])

在这里插入图片描述

(5)子图——subplot(m, n, p)

一个图像中呈现多个图像,subplot(m, n, p)
m 表示 创建的行数,n 表示 创建的列数,p 表示 将子图贴到某个已经创建好的图形窗口上

创建顺序是:
(1)subplot 先分配窗口。
(2)再使用 plot 函数在此窗口创建的函数的图像。

>> x =[0:0.01:5];
>> y = exp(-1.2*x).*sin(20*x);
>> subplot(1,2,1);
>> plot(x,y),xlabel('x'),ylabel('exp(-1.2*x).*sin(20*x)'),axis([0 5 -1 1]);
>> y = exp(-1.2*x).*sin(20*x);
>> subplot(1,2,2);
>> plot(x,y),xlabel('x'),ylabel('exp(-1.2*x).*sin(20*x)'),axis([0 5 -1 1])
>> 

在这里插入图片描述

(6)图像重叠hold onlinspace 命令

linspace(a,b) 表示,在a,b之间均匀的分布100个点
linspace(a,b,n) 表示,在a,b之间均匀的分布n个点
可以先使用linspace确定需要看得函数的大致位置,再用axis([])固定
此时已经有一个函数在图像上了,再使用 hold on ,再进行 第二个plot()

>> x = linspace(0,2*pi);
>> plot(x,cos(x)),axis([0 2*pi -1 1]);
>> hold on
>> plot(x,sin(x)),axis([0 2*pi -1 1])
>> 

在这里插入图片描述

(7)极坐标与对数对象

  • polar(theta,r)函数——极坐标产生
    plot函数能使用的功能,该函数同样适用;
>> theta = [0:pi/90:2*pi];
>> a = 2;
>> r = a*theta;
>> polar(theta,r,'r-.'),title('阿基米德螺线')

在这里插入图片描述

  • 对数图像
    即 将坐标轴使用log对数的形式进行给出,可以在数据集很小的状态下看清楚曲线的走向

(1)—— loglog()函数(两个坐标轴都以对数表示)
绘制一个频谱图时,关于 一般使用 拉普拉斯变换 S=iw(或者jw),规定频率取值范围为 ω 的范围为1≤ω≤100 rad/s,公式
绘制这种频谱图

>> RC = 0.25;
>> s = [1:100]*i;
>> F = abs(1./(1+RC*s));
>> loglog(imag(s),F),grid,xlabel('频率(rad/s)'),ylabel('输出/输出比'),title('频率响应')
>> 

在这里插入图片描述
(2)——semilogx(x, y)semilogy(x, y)选择一个 轴 以对数显示,而另外一个则以直接值形式显示

>> x=[0:20];
>> y = exp(-10*x.^2);
>> semilogy(x,y,'r-.'),title('exp(-10*x^2)'),xlabel('x'),ylabel('y'),grid
>> 

在这里插入图片描述

(8)离散数据绘图(折线等)

那种折线图、条形图等的绘制

  • 折线图——步骤:
>> x = [1:5];
>> y=[50,69,70,89,91];
>> >> plot(x,y,'*',x,y),set(gca,'XTicklabel',['x1';'x2';'x3';'x4';'x5']),...
set(gca,'XTick',[1:5]),axis([1 5 0 100]),xlabel('学生'),ylabel('分数')

在这里插入图片描述

  • 条形图bar(x,y)
>> x = [1:5];
>> y=[50,69,70,89,91];
bar(x,y),xlabel('学生'),ylabel('分数'),title('显示')

在这里插入图片描述

  • 针头图stem(t,f)
    这里如果范围很广,增量尽量大一些,不然针头会很密集
>> t = [0:5:200];
>> f = exp(-0.01*t).*sin(t/4);
>> stem(t,f),xlabel('时间/s'),ylabel('响应')

在这里插入图片描述

(9)等高线图

  • [x,y]=meshgrid(-5:0.1:5,-3:0.1:3)一个函数同时限定区域与增量
  • contour(x,y,z)绘制等高线
>> [x,y]=meshgrid(-5:0.5:5,-3:0.1:3);
>> z = cos(x).*sin(y);
>> [C,h]=contour(x,y,z);
>> set(h,'ShowText','on','TextStep',get(h,'Levelstep')*2)
>> 

在这里插入图片描述

  • 绘制三维等高线
>> [x,y]=meshgrid(-2:0.1:2);
>> z = y.*exp(-x.^2-y.^2);
>> contour(x,y,z),xlabel('x'),ylabel('y'); //图一
>> contour3(x,y,z,30);//图2
>> surface(x,y,z,'EdgeColor',[.8 .8 .8],'FaceColor','none');//图3
>> grid off
>> view(-15,20);//图4

surface()函数用于装饰
view()函数就是调整可视角度
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

(10)三维图像

mesh(x,y,z) 函数进行三维图像创建

>> [x,y] = meshgrid(-2*pi:0.1:2*pi);
>> z = cos(x).*sin(y);
>> mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');

在这里插入图片描述

>> [x,y] = meshgrid(-2:0.1:2);
>> z = y.*exp(-(x.^2+y.^2));
>> mesh(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');//图1
>> surf(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');//图2,修饰
>> surfc(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');//图3,修饰
>>> surfl(x,y,z),xlabel('x'),ylabel('y'),zlabel('z');
>> shading interp;
>> colormap(gray);//图4

surf 函数让图像带渐变色
surfc 函数让图像下方留下投影
surfl 函数设置一个光照表面,产生一个没有线条的三维图像

使用shading设置阴影为flatinterpfaceted
flat 是用同一颜色为每个网格进行着色并隐藏网格线;
facted 则显示网格;
interp 是告诉MATLAB 使用颜色插值的办法进行着色,因此显得非常平滑

colormap() 函数设置颜色

图1
在这里插入图片描述
图2
在这里插入图片描述
图3
在这里插入图片描述
图4
在这里插入图片描述

线性系统的补充

针对非线性时不变系统、线性时变系统,可以使用 matlab 的 ode45函数(具体见help)

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LionelMartin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值