MENU

Matlab—基础绘图

November 21, 2018 • Read: 403 • 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,它其实有很多参数,见下图

最后编辑于: November 25, 2018
Archives Tip
QR Code for this page
Tipping QR Code