matlab—基础绘图

栏目: 编程工具 · 发布时间: 5年前

内容简介:如果我们写两个 plot 函数他不会把这两个图画出来,因为 matlab 在执行代码的时候,后面的画图会把前面的画图清空掉,如果想把这两个函数的图都画出来,应该使用

plot()

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

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

matlab—基础绘图

hold on/off

如果我们写两个 plot 函数

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

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

plot style

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

matlab—基础绘图 matlab—基础绘图

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^-');

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

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

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

matlab—基础绘图

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}');

matlab—基础绘图

text() and annotation()

如果我们需要在图像中加入说明性的文本和某些图形比如说箭头,就会分别用到两个函数,一个是 text() ,一个是 annotation()
matlab—基础绘图 首先观察这个函数的横坐标,是从 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的基础,我直接给出代码不过多解释,了解一下即可

matlab—基础绘图

文本有了,直接用 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]);

matlab—基础绘图

subplot()

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

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);

matlab—基础绘图

Save Figures

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

matlab—基础绘图

以上所述就是小编给大家介绍的《matlab—基础绘图》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

SRE

SRE

贝特西 拜尔 (Betsy Beyer)、等 / 孙宇聪 / 电子工业出版社 / 2016-10-1 / CNY 108.00

大型软件系统生命周期的绝大部分都处于“使用”阶段,而非“设计”或“实现”阶段。那么为什么我们却总是认为软件工程应该首要关注设计和实现呢?在《SRE:Google运维解密》中,Google SRE的关键成员解释了他们是如何对软件进行生命周期的整体性关注的,以及为什么这样做能够帮助Google成功地构建、部署、监控和运维世界上现存最大的软件系统。通过阅读《SRE:Google运维解密》,读者可以学习到......一起来看看 《SRE》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换