Matlab Chapter III 绘图与图形
2D绘图基础
在这章里,自己打开Matlab并绘图是必要的;文章仅提供对应代码,鼓励你自己去尝试并画出漂亮的函数图像
matlab绘图主要包括3个流程:
- 定义函数
- 指定绘图值域
- 调用函数
plot(x,y)
让我们以正态函数为例:
>> x=[ -5:1:5];
y=normpdf(x,0,1);
plot(x,y)
但这样画出来的图像是粗糙的,这是因为我们的步长过大,因此我们需要调整函数的区间:
x=[ start : interval : end ];interval默认值为1
我们不妨将步长调整为0.1:
>> x1=[-5:5];
x2=[-5:0.1:5];
y1=normpdf(x1,0,1);
y2=normpdf(x2,0,1);
plot(x1,y1,x2,y2)
这段指令将帮助你在同一幅图中画出两个步长分别为1和0.1的正态函数,你可以明显看到曲线变得更加平滑了!
我们可以通过xlabel
和ylabel
给坐标轴添上标签,并且用title
添上标题,只要对最后一行稍作改动:
plot(x1,y1,x2,y2),xlabel('x'),ylabel('f(x)'),title('标准正态函数的图像');
特别的,当我们需要绘制的图像函数中包含了相乘时,例如:f = exp(-2*t)*sin(t);
直接调用plot将会提示error,我们必须使用矩阵相乘: f = exp(-2*t).*sin(t);
(平方等同理)
或者使用fplot
函数:fplot('exp(-2*t)*sin(t)',[0,4])
;
fplot语法:
fplot(‘function string’, [xstart, xend])
坐标轴命令
axis square
产生正方形图像;
axis equal
产生一个坐标完全相同的图像;
你也可以使用axis auto
来让matlab自己挑选适合的风格;
axis()
可以设置坐标轴范围,语法是:axis([xmin xmax ymin ymax])
添加图例
专业图像总是附有图例,以告诉读者某个曲线具体是什么,同样只需要添加在plot(x,y)
后面,我们继续以正态分布的图像为例:
>> x = [-5:0.1:5];
y=normpdf(x,0,1);
plot(x,y),xlabel('x'),ylabel('f(x)'),legend('标准正态分布的概率密度函数')
设置线条与颜色
matlab包含4种线条,分别是:
-
--
-.
:
并可以调用多种不同的颜色:
r-red; g-green; b-blue; k-black; w-white; y-yellow
子图
subplot(m,n,p)
m和n表示产生的子图有m行n列,p指向图形窗口,我们以例子说明:
>> x=[-5:0.1:5];
y=sin(3*x);
z=2*cos(2*x);
subplot(1,2,1)
>>plot(x,y,'r'),xlabel('x'),ylabel('sin3x'),title('figure1')
>> subplot(1,2,2)
>> plot(x,z,'b'),xlabel('x'),ylabel('2cos2x'),title('figure2')
- 注意我们必须先使用subplot指向具体的子图,再对它用plot进行绘制
linspace和图像重叠
x=linspace(a,b,n)
表示从a,b之间均匀地取出n个点,n的默认值是100,例如:
>> x=linspace(0,2*pi);
>> plot(x,cos(x))
每次重新调用plot函数都会将原来的图像删除,为了绘制重叠的图像我们可以使用hold on
命令,例如:
>> x=linspace(0,2*pi);
plot(x,cos(x))
>> hold on
>> plot(x,sin(x))
>> axis([0 2*pi -1.5 1.5]) %调整坐标轴以让我们的图像更为好看
这样就可以在一张图上画出重叠的cosx与sinx图像了