内容简介:如果我们写两个 plot 函数他不会把这两个图画出来,因为 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
,它其实有很多参数,见下图
以上所述就是小编给大家介绍的《matlab—基础绘图》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
构建高性能Web站点
郭欣 / 电子工业出版社 / 2012-6 / 75.00元
《构建高性能Web站点(修订版)》是畅销修订版,围绕如何构建高性能Web站点,从多个方面、多个角度进行了全面的阐述,几乎涵盖了Web站点性能优化的所有内容,包括数据的网络传输、服务器并发处理能力、动态网页缓存、动态网页静态化、应用层数据缓存、分布式缓存、Web服务器缓存、反向代理缓存、脚本解释速度、页面组件分离、浏览器本地缓存、浏览器并发请求、文件的分发、数据库I/O优化、数据库访问、数据库分布式......一起来看看 《构建高性能Web站点》 这本书的介绍吧!