MENU

Matlab— 基础绘图

November 21, 2018 • Read: 6054 • matlab阅读设置

基础绘图展开目录

plot()展开目录

plot() 函数是 matlab 中用于作图的函数,常用格式为:plot(x,y),x 代表横坐标,y 代表纵坐标,一般情况下如果是画一组连续的图,x 和 y 一般都是矩阵

还有一种格式:plot(y),如果只给一个参数,那么这个参数默认是代表纵坐标,而横坐标的值是默认值。举个例子,输入 plot(cos(0:pi/20:2*pi));,做出来的图是

hold on/off展开目录

如果我们写两个 plot 函数

  • plot(cos(0:pi/20:2*pi));
  • plot(sin(0:pi/20:2*pi));

他不会把这两个图画出来,因为 matlab 在执行代码的时候,后面的画图会把前面的画图清空掉,如果想把这两个函数的图都画出来,应该使用 hold on

plot style展开目录

我们还可以给图加上想要的样式。格式:plot(x,y,'str');str 的参数见下图

legend()展开目录

光有图,没有说明标签也不行,所以我们需要用到 legend() 这个函数,以一个例子来说明,我们首先做四个函数的图像

  • x = 0 : 0.5 : 4 * pi;
  • y = sin(x);
  • h = cos(x);
  • w = 1./(1+exp(-x));
  • g = (1/(4*pi)^0.5).*exp((-1.*(x-2*pi).^2)./(2*2^2));
  • plot(x,y,'bd-',x,h,'gp:',x,w,'ro-',x,g,'c^-');

这个图很不直观,因为缺少了标签说明,下面就给他加上

  • legend('sin(x)','cos(x)','Sigmoid','Gauss function');

他会根据你 plot 函数的顺序,依次给对应的线标上对应的标签

title() & label()展开目录

到现在为止这个图还不算完整,缺少横纵坐标的说明,以及标题,所以接下来我们就要用到几个函数来完善它:title()xlabel()ylabel()zlabel()

  • x = 0 : 0.1 : 2 * pi;
  • y1 = sin(x);
  • y2 = exp(-x);
  • plot(x,y1,'--*',x,y2,':o');
  • xlabel('t = 0 to 2\pi');
  • ylabel('values of sin(t) and e^{-x}');
  • title('Function Plots of sin(t) and e^{-x}');
  • legend('sin(t)','e^{-x}');

text() and annotation()展开目录

如果我们需要在图像中加入说明性的文本和某些图形比如说箭头,就会分别用到两个函数,一个是 text(),一个是 annotation()
首先观察这个函数的横坐标,是从 0 到 3,所以我们要用代码 x = linspace(0,3);,这里 y 的函数我也直接给出来 y = x.^2.*sin(x);,再看图上,有一条线段 x = 2,他需要用 line () 函数,通常其调用格式为:line([x 起始坐标, x 终止坐标],[y 起始坐标, y 终止坐标]);,所以使用 line([2,2][0,x.^2.*sin(2)]) 画出线段

剩下的就是图中的一段数学公式,这个需要 mathjax 或者 letex 的基础,我直接给出代码不过多解释,了解一下即可
文本有了,直接用 text() 函数写进去。text(x坐标, y坐标, str,'Interpreter','latex');,后面的 'Interpreter','latex' 这个是固定格式,填上去就行了

最后用 annotation() 函数画箭头,annotation('shape','x',[x 起始位置, x 终止位置],'y',[y 起始位置, y 终止位置]);shape 参数可以有很多值,具体见下表

shape 参数说明
line 线
arrow 箭头
doublearrow 双箭头
textarrow 带文本框的箭头

这个函数中的坐标并不是我们图像里对应的坐标,而是我们进行归一化以后的坐标,假设一个图的宽 w,高 h,坐标 [x,y],归一化以后的坐标就是 [x/w,y/h]

下面给出完整代码

  • x = linspace(0,3);
  • y = x.^2.*sin(x);
  • plot(x,y);
  • line([2,2],[0,2^2*sin(2)]);
  • str = '$$ \int_{0}^2 x^2\sin(x) dx $$';
  • text('Interpreter','latex','String',str,'Position',[0.25 2.5]);
  • annotation('arrow','x',[0.32,0.5],'y',[0.6,0.4]);

subplot()展开目录

现在要求在一个 figure 上,画很多不同的图,就必须用 subplot() 函数,其调用格式为:subplot(m,n,x);

  • clear;
  • clc;
  • x = -10 : 0.1 : 10;
  • y1 = x.^2-8;
  • y2 = exp(x);
  • subplot(2,1,1);plot(x,y1);
  • subplot(2,1,2);plot(x,y2);

Save Figures展开目录

我们有时候花完了图,想要保存,这时候就要用 saveas() 函数,其调用格式为:saveas(gcf,’filename’,’formattype’);gcf 就是你当前图像的默认的名字,filename 也不用多说,就是你给你保存的图像起个名字,关键是这个 formattype,它其实有很多参数,见下图

Last Modified: November 25, 2018
Archives Tip
QR Code for this page
Tipping QR Code