basic-1
约 3438 字大约 11 分钟
2026-01-20
matlab,实则是 mat rix lab oratory的缩写
以下内容是mathworks网站上的课程内容
1.窗口简介
MATLAB 中的等号 ( = ) 是 赋值 运算符,这意味着等号右侧的表达式赋给左侧的变量
工作区 窗口(右侧)显示了当前位于工作区中的所有变量
在命令的末尾添加 分号 将抑制输出,但仍会执行该命令。当您输入命令而没有以分号结尾时,MATLAB 将会在命令提示符下显示结果。
可以按键盘上的向上箭头键重新调用以前的命令。请注意,要执行此操作,命令行窗口必须为活动窗口
修改后,运用到该值的其他值保持不变。因为 MATLAB 不会在命令行窗口中重新运行以前的命令。如果要在修改 m 后重新计算 y ,需要重复命令 y = m/2
2.变量命名
与python差不多, 变量命名为符合以下规则的任何名称:以字母开头,并且仅包含字母、数字和下划线 (_)。
MATLAB 变量还区分大小写。
3.保存与加载变量
save 命令将工作区中的变量保存到称为 MAT 文件的 MATLAB 特定格式文件中。
要将工作区保存到名为 foo.mat 的 MAT 文件中,使用命令:
>> save foo可以使用 load 命令从 MAT 文件加载变量。
>> load fooclear 函数清理工作区的所有变量。clc 命令清理命令行窗口。
当您关闭 MATLAB 时,工作区将被清空。可以使用 MAT 文件来保存变量。这样,重新打开 MATLAB 时,可以将变量加载到工作区中。
加载或保存部分变量,可以使用函数的两个输入。从文件 myData.mat 中仅加载变量 m:
>> load myData m然后把变量 m 保存到名为 justm.mat 的新 MAT 文件中:
>> save justm m4.使用内置的函数和常量
MATLAB 包含一些内置的常量,例如用 pi 表示 π
>> a = pi
a =
3.1416这里虽然只对 π 显示了四位小数,但它在内部是用更高的精度表示的。
MATLAB 包含许多内置的函数,例如 abs(计算绝对值)和 eig(计算特征值)。
>> a = sin(-5)
a =
0.9589请注意,MATLAB 使用圆括号来传递函数输入,与标准的数学表示法类似。
请注意,解包含虚数 i,这是 MATLAB 中的内置常量。
在命令行窗口中仅显示前四个小数位,使用 format 函数控制显示的精度。
输入 format long 并显示 x 的值。
输入 format short 可切换回默认显示。
5.向量与矩阵
单个称为标量的数值实际上是一个 1×1 数组,也即它包含 1 行 1 列。
可以使用方括号创建包含多个元素的数组。
x = [3 5]
x =
3 5用空格(或逗号)分隔数值时(如前面的任务中所示),MATLAB 会将这些数值组合为一个 行向量 ,
用分号分隔数值时,MATLAB 会创建一个 列向量 。
x = [1;3]
x =
1
3可以组合使用空格和分号来创建一个矩阵,即包含多行多列的数组。输入矩阵时,必须逐行输入它们。
x = [3 4 5;6 7 8]
x =
3 4 5
6 7 8在 MATLAB 中,可以在方括号内执行计算。
x = [abs(-4) 4^2]
x =
4 16对于长向量,输入单个数值是不实际的。可用来创建等间距向量的替代便捷方法是使用 : 运算符并仅指定起始值和最终值。
y = 5:8
y =
5 6 7 8请注意, 当您使用冒号运算符时,不需要方括号 。
: 运算符使用默认的间距 1,可以指定您自己的间距,如下所示。
x = 20:2:26
x =
20 22 24 26如果知道向量中所需的元素数目(而不是每个元素之间的间距),则可以改用 linspace 函数:
linspace(first,last,number_of_elements)注意,请使用逗号 (,) 分隔 linspace 函数的输入。
x = linspace(0,1,5)
x =
0 0.250 0.500 0.750 1.000linspace 和 : 运算符都可创建行向量。使用转置运算符 (') 将行向量转换为列向量。
x = 1:3;
x = x'
x =
1
2
3通过在一条命令中创建行向量并将其全部转置来创建列向量。此处使用圆括号来指定运算的顺序。
MATLAB 包含许多函数,可帮助您创建常用的矩阵,例如随机数矩阵。
x = rand(2)
x =
0.8147 0.1270
0.9058 0.9134请注意,rand(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使用 zeros 函数创建一个包含 6 行 3 列 (6×3) 的全零矩阵。将结果赋给名为 x 的变量。
如何知道现有矩阵的大小?可以使用 size 函数
size(x)也可以使用一行代码创建与现有矩阵大小相同的矩阵
rand(size(x))6.索引
使用行、列索引从数组中提取值。
y = A(5,7)此语法将会提取 A 的第 5 行第 7 列的值,然后将结果赋给变量 y。与python不同的是,它的首位是1
您可以使用 MATLAB 关键字 end 作为行或列索引来引用最后一个元素。
y = A(end,2)注意,可以将算术运算与关键字 end 结合使用。
用作索引时,冒号运算符 (:) 可指代该维度中的所有元素。以下语法
x = A(2,:)会创建一个包含 A 中第 2 行上所有元素的行向量。
冒号运算符可以引用某个值范围。以下语法会创建一个包含矩阵 A 的第 1 行、第 2 行和第 3 行所有元素的矩阵。
x = A(1:3,:)单个索引值可用于引用向量元素。例如
x = v(3)会返回向量 v 的第 3 个元素(当 v 为行向量或列向量时)。
单个索引值范围可用于引用向量元素的子集。例如
x = v(3:end)返回向量 v 的一个子集,其中包含从第三个到最后一个元素范围内的所有元素。
索引可以是非连续数字。提取 density 的第一个、第三个和第六个元素。
x = density([1,3,6])可以结合使用索引和赋值来修改变量的元素。
7.数组处理
MATLAB 的设计让您能够自然地处理数组。例如,您可以将一个标量值与数组中的所有元素相加。
可以将任意两个大小相同的数组相加。
z = x + y可以将数组中的所有元素与某个标量相乘或相除。
MATLAB 中的基本统计函数可应用于某个向量以生成单个输出。可以使用 max 函数来确定向量的最大值。
xMax = max(x)round() 四舍五入到整数
* 运算符执行矩阵乘法。因此,如果使用 * 将两个大小相同的向量相乘,则由于内部维度不一致,将会收到一条错误消息。
z = [3 4] * [10 20]
错误使用 *
用于矩阵乘法的维度不正确。而 .* 运算符执行按元素乘法,允许您将两个大小相同的数组的对应元素相乘。
z = [3 4] .* [10 20]
z =
30 80size 函数可以应用于数组,以生成包含数组大小的单个输出变量。
s = size(x)size 函数可以应用于矩阵,以生成单个输出变量或两个输出变量。使用方括号 ( [ ] ) 获得多个输出。
[xrow,xcol] = size(x)可以使用 max 函数确定向量的最大值及其对应的索引值。max 函数的第一个输出为输入向量的最大值。执行带两个输出的调用时,第二个输出为索引值。
[xMax,idx] = max(x)如果只需函数的第二个输出,可以使用波浪号字符 (~) 忽略特定输出。
例如,您可能只需要包含向量中最大值的索引:
density = data(:,2)
[~,ivMax] = max(v2)
densityMax = density(ivMax)8.绘图
可以使用 plot 函数在一张图上绘制两个相同长度的向量。
plot(x,y)当您在 x 轴上绘制 a 并在 y 轴上绘制 b 时,请使用以下语法
plot(a,b)plot 函数接受一个附加参数。使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。
plot(x,y,"r--o")以上命令将会绘制一条红色 (r) 虚线 (--),并使用圆圈 (o) 作为标记。在线条设定的文档中了解有关可用符号的详细信息。
请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线。
启用保留状态时,将继续在同一坐标区上绘图。要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off
单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 1 到 n(向量中的元素数目)。
plot 函数接受可选的附加输入,这些输入由一个属性名称和一个关联的值组成。
plot(y,"LineWidth",5)以上命令将绘制一条粗线。在线条属性文档中了解更多可用属性的详细信息。
使用 plot 函数时,可在绘图参数和线条设定符之后添加属性名称-属性值对组。
plot(x,y,"ro-","LineWidth",5)plot 函数用来绘制线条。MATLAB 中还有许多其他绘图函数。在 MATLAB 图库中看到一个详尽的列表。
可以使用绘图注释函数(例如 title)在绘图中添加标签。此类函数的输入是一个字符串。MATLAB 中的字符串是用双引号 (") 引起来的。(题头)
title("Plot Title")使用xlabel , ylabel 函数添加标签。
您可以使用 legend 函数为绘图添加图例。
legend("a","b","c")您可以在绘图注释中使用变量的值,方法是将字符串与变量 串联 起来:
bar(data(3,:))
title("Sample " + sample(3) + " Data")9.以表的形式导入数据
要提取表变量,可以使用圆点表示法:
data.VariableName如果您正在使用表,您可能希望将相关数据放在一起。您可以将计算结果赋给表,而不是创建单独的变量。
data.HeightMeters = data.HeightYards*0.9144如果变量 data.HeightMeters 不存在,MATLAB 将在表中创建名为 HeightMeters 的新变量。
通过在实时脚本的输出窗格中点击表来与表进行交互。例如,使用表的一个变量对表进行排序。 在对表感到满意时,可以通过更新代码使更改永久化。
通过点击输出窗格中的表来完成此任务。确保使用“更新代码”按钮来更新脚本中的代码。
圆点表示法用于提取表变量。要提取行,可以使用常规数组索引。
尝试提取表的前三行:
top3 = elements(1:3,:)请注意,top3 也是一个表。
10.逻辑
逻辑索引
关系运算符(例如 >、<、== 和 ~=)执行两个值之间的比较。相等或不相等比较的结果为 1 (true) 或 0 (false)。
使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。
[5 10 15] > 12
ans =
0 0 1您可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素。以下示例将会提取 v1 中大于 6 的所有元素。
v = v1(v1 > 6)
v =
6.6678
9.0698您也可以对两个不同向量使用逻辑索引。
v = sample(v1 > 6)
v =
18
23您可以使用逻辑索引在数组中重新赋值。例如,如果您要将数组 x 中等于 999 的所有值都替换为值 1 ,请使用以下语法。
x(x==999) = 1您可以使用逻辑运算符 and ( & ) 以及 or ( | ) 来组合逻辑比较。
要查找小于 4 且 大于 2 的值,请使用 & :
x = v1(v1<4 & v1>2)要查找大于 6 或 小于 2 的值,请使用 | :
x = v1(v1>6 | v1<2)决策分支
仅当条件为 true 时,才执行 if 代码块的主体。注意没有冒号,有end
if doPlot
%% Plotting code;
end使用 else 关键字,如下所示。
x = rand
if x > 0.5
y = 3
else
y = 4
endelseif 关键字可在 if 后使用,以添加更多条件。您可以包括多个 elseif 代码块。
试着添加一个变量 doDisplay,用它来切换是否显示密度。使用 elseif 代码块添加此条件。
运行以下代码时,循环体将被执行三次,因为循环计数器 (c) 通过 1:3(1、2 和 3)进行计数。
for c = 1:3
disp()
end更新日志
3824e-eleven于
