MATLAB 入门之旅学习笔记
https://matlabacademy.mathworks.com/R2019a/cn/portal.html?course=gettingstarted
1.概述
2.1
输入命令
1. 您可以通过在命令行窗口中
MATLAB 提示符 (>>) 后输入命令,然后按
Enter 键来执行命令。
2. 除非另有指定,否则 MATLAB 会将计算结果存储在一个名为 ans 的变量中。
7+3
ans =
10
3.
MATLAB 中的等号 (=) 为赋值运算符,表示等号右侧的表达式赋给左侧的变量。因此,当您输入 x = 3+4 时,MATLAB 首先会计算 3+4,然后再将结果 (7) 赋给变量
x。
4. 请注意,工作区窗口(右侧)显示了当前位于工作区中的所有变量。
5. 在命令的末尾添加分号将抑制输出,但仍会执行该命令,正如您在工作区中所看到的。当您输入命令而没有以分号结尾时,MATLAB 将会在命令行窗口中显示结果。
x = 5+1
x =
6
x = 5+1;
6. 您可以按键盘上的向上箭头键重新调用以前的命令。请注意,要执行此操作,命令行窗口必须为活动窗口。
7. 当您在命令提示符下仅输入变量名称时,MATLAB 将会返回该变量的当前值。
2.2 在变量中存储数据
1. 您可以将 MATLAB 变量命名为符合以下规则的任何名称:以字母开头,并且仅包含字母、数字和下划线 (_)。
如果您使用无效的变量名称,MATLAB 会显示建议的更正内容。您可以使用建议的命令、对其进行修改或按 Esc 键删除建议。
2. 试着输入以下命令,清除所有变量: clear。
3. clear 用于删除工作区变量,clc 用于清除命令行窗口。
2.3 使用内置的函数和常量
1. MATLAB 包含内置的常量,例如
pi 表示 π。
a = pi
a =
3.1416
此外,虽然只对 π 显示了四位小数,但它在内部是用更高的精度表示的。
2. MATLAB 包含许多内置的函数,例如 abs(计算绝对值)和 eig(计算特征值)。
a = sin(-5)
a =
0.9589
请注意,MATLAB 使用圆括号来传递函数输入,与标准的数学表示法类似。
3. 现在,试着使用 sqrt 函数计算 -9 的平方根。将结果赋给一个名为 z 的变量。
3.1 手动输入数组
1. 所有 MATLAB 变量都是数组,这意味着每个变量均可以包含多个元素。单个称为标量的数值实际上是一个 1×1 数组,也即它包含 1 行 1 列。
2. 您可以使用方括号创建包含多个元素的数组。
x = [3 5]
x =
3 5
3. 当您用空格(或逗号)分隔数值时,MATLAB 会将这些数值组合为一个行向量,行向量是一个包含一行多列的数组 (1×n)。当您用分号分隔数值时,MATLAB
会创建一个列向量 (n×1)
x = [1;3]。
4. 现在,试着创建一个名为 x 的 1×3 行向量,其中依次包含值 3、10 和 5。
5. 现在,试着创建一个名为 x 的 3×1 列向量,其中依次包含值 8、2 和 -4。
6. 您可以组合使用空格和分号来创建矩阵,即包含多行多列的数组。输入矩阵时,您必须逐行输入它们。
x = [3 4 5;6 7 8]
x =
3 4 5
6 7 8
7. 在 MATLAB 中,您可以在方括号内执行计算。
x = [abs(-4) 4^2]
x =
4 16
3.2 创建等间距向量
1. 我们经常需要创建一些包含等间距数值的向量,例如:
y = [5 6 7 8]
y =
5 6 7
8
y = 5:8
y =
5 6 7
8
3. :
运算符使用默认的间距 1,但是您可以指定您自己的间距,如下所示。
x = 20:2:26
x =
20 22 24
26
4. 试着创建一个名为 x 的行向量,该向量以 3 开头,以 13 结尾,并且每个元素的间隔为 2。
5. 如果您知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数:linspace(first,last,number_of_elements)。注意,请使用逗号 (,) 分隔 linspace 函数的输入。
x = linspace(0,1,5)
x =
0 0.250 0.500
0.750 1.000
6.
linspace 和 : 运算符都可创建行向量。但是,您可以使用转置运算符 (’) 将行向量转换为列向量。
x = 1:3;
x = x’
x =
1
2
3
7. 您可以通过在一条命令中创建行向量并将其全部转置来创建列向量。注意此处使用圆括号来指定运算的顺序。
x = (1:2:5)’
x =
1
3
5
3.3 数组创建函数
1. MATLAB 包含许多函数,可帮助您创建常用的矩阵,例如随机数矩阵。
x = rand(2)
x =
0.8147
0.1270
0.9058
0.9134
请注意,rand(2) 命令中的 2 指定输出将为一个 2×2 的随机数矩阵。
2. 许多矩阵创建函数允许您输入一个数值来创建方阵 (n×n),或者输入两个数值来创建非方阵。
x = rand(2)
x =
0.8147
0.1270
0.9058
0.9134 >> x = rand(2,3)
x =
0.6324
0.2785 0.9575
0.0975
0.5469 0.9649
3. 现在,试着使用 zeros 函数创建一个包含
6 行 3 列 (6×3) 的全零矩阵。将结果赋给名为 x 的变量。
4.1 保存和加载变量
1. 您可以使用 save 命令将工作区中的变量保存到称为 MAT 文件的 MATLAB 特定格式文件中。
save foo x
以上命令将名为 x 的变量保存到名为
foo.mat 的 MAT 文件中。
2. 现在,使用 clear 将工作区清空。
3. 您可以使用 load 命令从 MAT 文件加载变量。
load foo
5.1 对数组进行索引
1. 您可以使用行、列索引从数组中提取值。
x = A(5,7);
此语法将会提取 A 的第 5 行第 7 列的值,然后将结果赋给变量 x。
2. 您可以使用 MATLAB 关键字 end,作为行或列索引来引用最后一个元素。
x = A(end,2);
3. 请注意,您可以将算术运算与关键字 end 结合使用。例如:
x = A(end-1,end-2)
5.2 提取多个元素
1. 用作索引时,冒号运算符 (? 可指代该维度中的所有元素。以下语法
x = A(2,:)
会创建一个包含 A 中第 2 行上所有元素的行向量。
2. 冒号运算符可以引用某个值范围。以下语法会创建一个包含矩阵 A 的第 1 行、第 2 行和第 3 行所有元素的矩阵。
x = A(1:3,:)
3. 单个索引值可用于引用向量元素。例如,以下语句
x = v(3)
会返回向量 v 的第 3 个元素(当 v 为行向量或列向量时)。
4. 单个索引值范围可用于引用向量元素的子集。例如
x = v(3:end)
返回向量 v 的一个子集,其中包含从第三个到最后一个元素范围内的所有元素。
5.3 更改数组中的值
1. 记住您可以使用 : 字符来提取整列数据。
2. 可以通过组合使用索引与赋值来修改变量的元素。
A(2,5) = 11
3. 现在,试着将 data 的第一行最后一列的值更改为 0.5。
6.1 执行数组运算
1.
MATLAB 的设计让您能够自然地处理数组。例如,您可以将一个标量值与数组中的所有元素相加。
y = x + 2
2. 您可以将任意两个大小相同的数组相加。
z = x + y
3. 您可以将数组中的所有元素与某个标量相乘或相除。
z = 2*x
y = x/3
4.
MATLAB 中的基本统计函数可应用于某个向量以生成单个输出。可以使用 max 函数来确定向量的最大值。
xMax = max(x)
5. MATLAB 的函数可在单个命令中对整个向量或值数组执行数学运算。
xSqrt = sqrt(x)
6. *
运算符执行矩阵乘法。因此,如果您使用 * 将两个大小相同的向量相乘,则由于内部维度不一致,您将会收到一条错误消息。
z = [3 4] * [10 20]
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 ‘.*’。
而 .* 运算符执行按元素乘法,允许您将两个大小相同的数组的对应元素相乘。
z = [3 4] .* [10 20]
7.1 从函数调用获取多个输出
1. size 函数可以应用于数组,以生成包含数组大小的单个输出变量。
s = size(x)
2.
size 函数可以应用于矩阵,以生成单个输出变量或两个输出变量。使用方括号 ([ ]) 获取多个输出。
[xrow,xcol] = size(x)
3. 可以使用 max 函数确定向量的最大值及其对应的索引值。max 函数的第一个输出为输入向量的最大值。执行带两个输出的调用时,第二个输出为索引值。
[xMax,idx] = max(x)
8.1 获取帮助: (2/2) 练习
1. 您可以输入
doc fcnName
以获取任何 MATLAB 函数的相关信息。
2.
MATLAB 文档包含许多有用的示例和信息,可帮助您自行处理问题。
9.1 绘制向量图
1. 可以使用 plot 函数在一张图上绘制两个相同长度的向量。
plot(x,y)
2.
plot 函数接受一个附加参数,该参数让您能够在单引号中使用各种符号来指定颜色、线型和标记样式。
plot(x,y,‘r–o’)
以上命令将会绘制一条红色 ® 虚线 (–),并使用圆圈 (o) 作为标记。您可以在线条设定的文档中了解有关可用符号的详细信息。
3. 您会注意到,最开始创建的绘图消失了。要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线。您也可以使用 hold off 命令返回到默认行为。
4. 任务
现在绘制 mass1(y 轴)对 sample(x 轴)的图,并带有黑色
(k) 方形 (s) 标记,不带线条。(线条设定选项)
5. 任务
试着输入 close all 命令以关闭所有打开的图窗窗口。
6. 当您单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1 到 n(向量中的元素数目)。
任务
使用以下命令绘制向量 v1。
plot(v1)
7. plot 函数接受可选的附加输入,这些输入由一个属性名称和一个关联的值组成。
plot(y,‘LineWidth’,5)
以上命令将绘制一条粗线。您可以在 Line 属性文档中了解更多可用属性的详细信息。
8. 使用 plot 函数时,您可在绘图参数和线条设定符之后添加属性名称-属性值对组。
plot(x,y,‘ro-’,‘LineWidth’,5)
9.2 编写绘图注释
1. 可以使用绘图注释函数(例如 title)在绘图中添加标签。这些函数的输入是一个字符串。MATLAB 中的字符串是用单引号 (’) 引起来的。
title(‘Plot Title’)
//在图顶上
2. 任务
使用 ylabel 函数添加标签
‘Density (g/cm^3)’。//在y轴上
9.3 “绘图”选项卡
1.选择要绘制的变量
2.选择plots和绘制的类型
3.选择两个变量绘图
10.1 项目 - 用电量
1.使用 legend 函数指定图例。
legend(‘a’,‘b’,‘c’)
任务
在现有绘图上添加图例值 ‘res’、‘comm’
和 ‘ind’。
12.3 逻辑索引
2. 试着创建一个名为 s 的变量,其中包含
sample 中与 v1 中小于 4 的元素所在位置对应的元素。
s = sample(v1 < 4)