救救你的REPORT(7)— 绘制曲线图

果然我的更新速度是跟不上大家的需求的。这一讲我们简单的说一下如何用Matlab来绘制曲线图,以及怎么导出PDF图并插入到LaTeX中去。另外,我根据某老师放在ICE上的极简LaTeX模板,结合我的模板,制作了一个轻量级的支持我定义的命令的新模板:去Github上下载。事实上我为这个专栏做了一个专门的页面:LaTeX写作专栏,每一期的内容和资料都会在上面呈现。

曲线图的绘制(Matlab版本)

曲线图是最常用的用来对比效果、展示性能的手段。我们可以使用很多种软件来绘制如下这种曲线图:

但是Matlab是我的最爱,Matlab是一个特别强大的工具,可以拿它来做太多事情了。用来画图绝对是大材小用了。但是大家以后几乎必然会学到Matlab,并且西浦为所有学生都购买了Matlab的正版(如何安装请咨询MITS Office),所以我们干脆直接点就来让大家尝试Matlab了。如果你的电脑没有Matlab,没关系,可以在任何一个EEE的机房来使用,Matlab肯定是必装软件。请大家一定要安装正版使用,安装完成之后,打开Matlab会出现如下画面(可能颜色和我不一样):

Matlab启动后的画面(全屏)

这个界面的最左侧是文件管理器,中间是一个命令窗口,用来直接执行一些命令,或者查看脚本(script)的输出结果等到,右边的Workspace主要是用来显示当前的变量等信息。我们今天不是主讲Matlab,所以细节先不讲,主要是迅速教大家怎么用Matlab绘制二维的曲线图。以后有时间我们慢慢来说Matlab和绘图,包括三维图等等(又挖了一个坑)

第一步,新建一个script文件,可以命名为 draw.m:

新建脚本

然后双击打开draw.m文件,你会得到一个空白的编辑窗口:

编辑窗口

下面用几十行代码让大家速成一下Matlab:

% 一个最简单的Matlab教程
% 百分号开始的是注释, 两个百分号是分段

%% 基本语法

% 无论是在script里还是在命令窗里,都可以执行所有的matlab命令和函数
% 不需要include之类的东西

% clear 是清除所有保存的变量和数据
% Matlab 事实上是个lab,你可以在里面不停的实验,程序执行完,数据都在的,
% 你可以不停的尝试
clear;

% clc 是清屏
clc


% 赋值语句就是等于号,和C语言一样
% 后面加分号的意思是结果不输出到命令窗
a = 1;
b = 2

% Matlab 直接支持矩阵型变量,事实上Matlab就是 Matrix Lab的缩写
% []里就是矩阵,可以直接表达1维和2维,更高维度特殊一些,以后再说
m = [1 2 3 4 5];
n = [1 2 3 4 5 
     6 7 8 9 10];

% 这俩矩阵直接能做乘法,是不是比C不知道高到哪里去了
mul = m * n'
% 单引号的意思是矩阵转置,要不那俩矩阵不能相乘,希望你们线性代数学了,不学也没关系

% 如果两个矩阵尺寸完全一致,需要做点乘,就用 .* 就行了,除法,指数(^)一样的道理

% 访问矩阵里某个数值像下面这样就可以了,注意,Matlab里的index从1开始,这个和C不一样
n(1,3)

% 快速生成矩阵的一些办法
% 下面这种方法是生成等间隔的1维矩阵,从0开始,间隔0.1,生成都0.9,一共十个数
t = 0:0.1:0.9;

% 生成一个2行3列全是0的矩阵
z = zeros(2,3);

% 生成一个2行3列全是1的矩阵
o = ones(2,3);

%% 选择结构

if a == b
    c = 1;
elseif b == 2
    c = 2;
else
    c= 3;
end

c

% 选择结构和C的套路完全一样,只是语法变得更简单了,Matlab里不是用大括号来分作用域
% 而是使用end来表示一段作用域的结束

%% 循环结构

% i从1循环到100,中间间隔为1,也可以根据上面的方法改间隔
for i = 1:100
    
end

% 最基本的语法已经讲完了

%% 绘图

% 假设数据是这个,时间轴是 之前定义的 t
data1 = [1 2 1 3 4 6 7 9 11 10];
data2 = [3 4 1 5 7 1 4 8 12 9];
% 二维曲线的绘图命令是 plot
plot(t, data1, 'r+-', 'linewidth',2);
hold on;
plot(t, data2, 'b*-.', 'linewidth',2);
% 第一个参数是 x轴, 第二个参数是 y 轴,
% ’r+-' 代表 红色 节点为+号形状 实线
% 'b*-.' 代表 蓝色 节点为*号形状 点画线
% ’linewidth‘ 显而易见是粗细
% hold on 意思是画下一个曲线是上一个保留

% 还有更多设置请使用help命令来求助
help plot

% 我们再加上x和y轴的文字描述以及标题
xlabel('time')
ylabel('distance')
title('Movement')

% 打开网格,看起来更舒服
grid on;

% 再对两条线进行描述
legend('Machine 1','Machine 2','Location','NorthWest');

% 是不是已经出现了像模像样的图了?

执行这段代码,会出现下面的场面:

执行结果

这个图看起来已经有点意思了,不过还是需要调整的:

选择 File -> Export Setup

输出的设置

设置完毕之后点击 Apply to Figures,然后点击Export,输出PDF格式到我们LaTeX项目的fig文件夹下。然后用pdfcrop来裁减掉白边。就可以插入到LaTeX中了。

在这一讲中,恭喜大家又学会了一个新工具——Matlab,虽然只是速成。请大家记住Matlab的学习方法:遇到任何想法,去google搜出相应的Matlab命令函数,然后在Matlab的command window里 help 这个命令,用官方的解释和例子来学习。你会进步的很快。Matlab还有很多很多东西可以讲,但不是在这里讲。

这次是日更,请大家多多支持,扫码支持或者通过支付宝13584435676。比特币钱包是1NBzPagXqFHrwzxT4haGnX7S9FuwTkvX39.


作者:程飞。未经作者允许请勿转载其他网站,可以转载朋友圈。2,442 次浏览

 

发表评论