可以通过在命令行窗口中MATLAB提示符(>>)后输入命令,然后按Enter键来执行命令。
>>3 * 5
ans =
15
%%除非另有指定,否则 MATLAB 会将计算结果存储在一个名为 ans 的变量中。%%
>>7 + 3
ans=
10
>>m = 3 * 5
m =
15
MATLAB 中的等号 (=) 是赋值运算符,这意味着等号右侧的表达式赋给左侧的变量。
当输入 x = 3 + 4 时,MATLAB 首先计算 3 + 4,然后将结果 (7) 赋给变量 x。
>>m = m + 1
m =
16
请注意,工作区窗口(右侧)显示了当前位于工作区中的所有变量.
>>y = m / 2
y =
8
在命令的末尾添加分号将抑制输出,但仍会执行该命令,正如您在工作区中所看到的。当您输入命令而没有以分号结尾时,MATLAB 将会在命令提示符下显示结果。
>>k = 8 - 2
k =
6
>>k = 8 - 2;
%%无输出,结果不会出现在命令提示符下,但可以在工作区窗口中看到该值。
可以按键盘上的向上箭头键重新调用以前的命令。请注意,要执行此操作,命令行窗口必须为活动窗口。
当在命令提示符下仅输入变量名称时,MATLAB 将会返回该变量的当前值。
您可以将 MATLAB 变量命名为符合以下规则的任何名称:以字母开头,并且仅包含字母、数字和下划线 (_)。
MATLAB 变量还区分大小写
%%任务 将值 -2 赋给变量 A。
>>A = -2
A =
-2
可以将你的所有变量命名为 a 或 x,但对变量进行更有意义的命名会更有用。
如果使用无效的变量名称,MATLAB 会显示建议的更正内容。可以使用建议的命令、对其进行修改或按 Esc 键删除建议。
可以使用 save 命令将工作区中的变量保存到称为 MAT 文件的 MATLAB 特定格式文件中。
%%要将工作区保存到名为 datafile.mat 的 MAT 文件中,请使用命令:
>> save datafile
当您要在 MATLAB 中切换处理新问题时,可能需要整理工作区。您可以使用 clear 函数从工作区中删除所有变量
%%任务 使用 clear 将工作区清空。
>>clear
%%在工作区中,可以看到 clear 命令清空了所有变量。
可以使用 load 命令从 MAT 文件加载变量。
>> load datafile
%%此时工作区出现变量
%%请注意,变量 data 在工作区中列出。您可以通过输入变量的名称来查看任何变量的内容。
>>data
data =
3.0000 0.5300 4.0753 NaN
18.0000 1.7800 6.6678 2.1328
19.0000 0.8600 1.5177 3.6852
20.0000 1.6000 3.6375 8.5389
21.0000 3.0000 4.7243 10.1570
23.0000 6.1100 9.0698 2.8739
38.0000 2.5400 5.3002 4.4508
clear 函数清理工作区。clc 命令清理命令行窗口。
>>clc
%%使用 clc 命令清空命令行窗口,此时图片里窗口内容清空
当关闭 MATLAB 时,工作区将被清空。可以使用 MAT 文件来保存变量。这样,当您重新打开 MATLAB 时,可以将变量加载到工作区中
如果只想加载或保存部分变量,可以使用函数的两个输入。尝试从文件 myData.mat 中仅加载变量 m:
>> load myData m
然后尝试将变量 m 保存到名为 justm.mat 的新 MAT 文件中:
>> save justm m
MATLAB 包含一些内置的常量,例如用 pi 表示 π。
>> a = pi
a =
3.1416
这里虽然只对 π 显示了四位小数,但它在内部是用更高的精度表示的。
%%创建一个名为 x 的变量,其值为 π/2。
>>x = pi/2
x =
1.5708
MATLAB 包含许多内置的函数,例如 abs(计算绝对值)和 eig(计算特征值)。
>> a = sin(-5)
a =
0.9589
请注意,MATLAB 使用圆括号来传递函数输入,与标准的数学表示法类似。
%%使用 sin 函数计算 x 的正弦值。将结果赋给一个名为 y 的变量。
>>x = pi/2
x =
1.5708
>>y = sin(x)
y =
1
%%使用 sqrt 函数计算 -9 的平方根。将结果赋给一个名为 z 的变量
>>z = sqrt(-9)
z =
-3
%%请注意,解包含虚数 i,这是 MATLAB 中的内置常量。
在命令行窗口中仅显示前四个小数位。您可以使用 format 函数控制显示的精度。
请试着输入 format long 并显示 x 的值。
输入 format short 可切换回默认显示。
>>x = pi/2
x =
1.5708
>> format long
>> x
x =
1.570796326794897
>> format short
>> x
x =
1.5708
此实时脚本包含格式化文本、代码和分节符。在本课程中,脚本将包括任务标题,以指示您应在哪里输入代码。
要只执行一个节的代码,可以点击 MATLAB 工具条中的运行节按钮。
试着更改 r 的值,并仅运行该节。输出窗格中 r 的值会发生了怎样的变化?x 的值如何?
也可以使用工具条中的按钮来创建新的节。尝试创建包含 y = 2*pi*r 的新的节。
初始时,r = 0.5
修改后r = 1,只运行第二节时,运行前后x的值不变
所有 MATLAB
变量均为数组。这意味着每个变量都可以包含多个元素。您可以使用数组将相关数据存储在一个变量中。
由于每次编程都会使用数组,因此了解数组以及用于说明数组的术语非常重要。
单个称为标量的数值实际上是一个 1×1 数组,也即它包含 1 行 1 列。
可以使用方括号创建包含多个元素的数组。
x = [3 5]
x =
3 5
当您用空格(或逗号)分隔数值时(如前面的任务中所示),
MATLAB
会将这些数值组合为一个行向量,行向量是一个包含一行多列的数组 (1×n)。当您用分号分隔数值时,MATLAB
会创建一个列向量 (n×1)。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
数组在 MATLAB 中的使用非常普遍。事实上,MATLAB 是 MATrix LABoratory 的缩写。您会发现大多数 MATLAB 功能可以同时处理多个值。
创建数组时有一定的灵活性。例如,可通过以下几种有效方法来创建同一数组:
x = [7 9] x=[7,9] x = [7, 9]
%%任务1 创建一个名为 x 并且值为 4 的变量。
x = 4
%%任务2 创建一个名为 x 的数组,其中包含两个元素:7 和 9
x = [7 9]
%%任务3 创建一个名为 x 的数组,其中包含两个元素 7 和 9,且两个元素位于同一列中。试着复制以前的命令,并将数值之间的空格改为分号 (;)。
x = [7;9]
%%任务4 创建一个名为 x 的行向量,其中依次包含值 3、10 和 5。
x=[3 10 5]
%%任务5 创建一个名为 x 的列向量,其中依次包含值 8、2 和 -4。
x=[8;2;-4]
%%任务6 创建一个名为 x 的矩阵,其中包含的值如下所示。
5 6 7
8 9 10
x=[5 6 7;8 9 10]
%%任务7 创建一个名为 x 的行向量,其中第一个元素为 sqrt(10),第二个元素为 pi^2。
x = [sqrt(10) pi^2]
%%试着用空格、逗号和分号来创建以下矩阵:
⎡7 1 8⎤
⎢4 5 8⎢
⎣10 4 2⎦
x = [7 1 8;4 5 8;10 4 2]
以上各案例输出结果:
- 我们经常需要创建一些包含等间距数值的向量,例如以下向量。
y = [5 6 7 8] y = 5 6 7 8
- 对于长向量,输入单个数值是不实际的。可用来创建等间距向量的替代便捷方法是使用
:
运算符并仅指定起始值和最终值。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.000
linspace
和:
运算符都可创建行向量。但是,您可以使用转置运算符 ('
) 将行向量转换为列向量。x = 1:3; x = x' x = 1 2 3
- 您可以通过在一条命令中创建行向量并将其全部转置来创建列向量。注意此处使用圆括号来指定运算的顺序。
x = (1:2:5)' x = 1 3 5
- 请注意,如果您使用
linspace
或:
创建向量,则不需要使用方括号 ([]
)。
%%任务1 创建一个名为 x 的行向量,其中依次包含值 1、2 和 3。
x = [1 2 3]
%%任务2 创建一个名为 x 的行向量(包含值 1、2、3 和 4),但这次使用 : 运算符。
x = 1:4
%%任务3 创建一个名为 x 的行向量,该向量以 1 开头,以 5 结尾,每个元素的间距为 0.5。
x = 1:0.5:5
%%任务4 创建一个名为 x 的行向量,该向量以 3 开头,以 13 结尾,每个元素的间距为 2。
x = 3:2:13
%%任务5 创建一个名为 x 的行向量,该向量以 1 开头,以 10 结尾,共包含 5 个元素。
x = linspace(1,10,5)
%%任务6 使用转置运算符将 x 从行向量转置为列向量。
x = x'
%%任务7 在一条命令中,创建一个名为 x 的列向量,该向量以 5 开头,以 9 结尾,并且元素之间的间隔为 2。
x = (5:2:9)'
%%如果您要创建从 1 到 2π 的等间距向量,其中包含 100 个元素,您会使用 linspace 还是 :?
x = linspace(1,2*pi,100)
运行结果
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
%%任务1 创建一个名为 x 的变量,该变量是一个 5×5 的随机数矩阵。
x = rand(5)
%%任务2 使用 rand 创建一个包含 5 行 1 列的数组。将结果赋给名为 x 的变量。
x = rand(5,1)
%%任务3 使用 zeros 函数创建一个包含 6 行 3 列 (6×3) 的全零矩阵。将结果赋给名为 x 的变量
x = zeros(6,3)
%%如何知道现有矩阵的大小?您可以使用 size 函数。
size(x)
也可以使用一行代码创建与现有矩阵大小相同的矩阵。
rand(size(x))
运行结果
Matlab
中的数组索引从1
开始
- 您可以使用行、列索引从数组中提取值。
y = A(5,7)
此语法将会提取
A
的第 5 行第 7 列的值,然后将结果赋给变量y
。
- 您可以使用 MATLAB 关键字
end
作为行或列索引来引用最后一个元素。y = A(end,2
- 请注意,您可以将算术运算与关键字
end
结合使用。例如:y = A(end-1,end-2)
- 如果只对一个矩阵使用一种索引,它将按顺序从上到下遍历每列。也可以使用变量作为索引。
load datafile
data
%%任务1 创建一个名为 x 的变量,其值为变量 data 中位于第 6 行第 3 列的值。
x = data(6,3)
%%任务2 使用 end 关键字获取变量 data 的最后一行第三列的值。将该值赋给一个名为 x 的变量。
x = data(end,3)
%%任务3 创建标量变量 x,其值为 data 的倒数第二 (end-1) 行第三列的值。
x = data(end-1,3)
%%试着用一种索引提取 data 的第八个元素。
x = data(23)
%%试着创建一个变量 y,并用 y 作为 data 的索引。
y = 8
x = data(y)
- 用作索引时,冒号运算符 (
:
) 可指代该维度中的所有元素。以下语法x = A(2,:)
会创建一个包含
A
中第 2 行上所有元素的行向量。
- 冒号运算符可以引用某个值范围。以下语法会创建一个包含矩阵
A
的第 1 行、第 2 行和第 3 行所有元素的矩阵。x = A(1:3,:)
- 单个索引值可用于引用向量元素。例如
x = v(3)
会返回向量
v
的第 3 个元素(当v
为行向量或列向量时)。
- 单个索引值范围可用于引用向量元素的子集。例如
x = v(3:end)
返回向量
v
的一个子集,其中包含从第三个到最后一个元素范围内的所有元素。
- 索引可以是非连续数字。
load datafile
data
%%任务1 创建一个名为 density 的变量,其中包含名为 data 的矩阵中第 2 列上的所有元素
density = data(:,2)
%%任务2 创建一个名为 volumes 的变量,其中包含 data 的最后两列的所有元素。
volumes = data(,end-1:end)
%%任务3 使用单个索引值创建一个名为 p 并且包含向量 density 中的第 6 个元素的变量。
p = density(6)
%%任务4 使用索引值范围创建一个名为 p 的向量,其中包含从 density 的第 2 个到第 5 个元素范围内的所有元素。
p = density(2:5)
记住您可以使用
:
字符来提取整列数据。可以结合使用索引和赋值来修改变量的元素。
A(2) = 11
您可以结合使用索引与赋值,将数组值更改为与其他元素相等。例如,以下代码将
x(1)
的值更改为x(2)
的值:x(1) = x(2)
load datafile
data
%%任务1 创建一个名为 v2 并且包含 data 的最后一列元素的向量。
v2 = data(:end)
%%任务2 将 v2 中的第一个元素从 NaN 更改为 0.5。
v2(1) = 0.5
%%任务3 将 data 的第一行和最后一列中元素的值更改为 0.5。
data(1,end) = 0.5
%%尝试将 data 的第一列更改为 data 的第二列。
data(:,1) = data (:,2)
MATLAB
的设计让您能够自然地处理数组。例如,您可以将一个标量值与数组中的所有元素相加。y = x + 2
- 您可以将任意两个大小相同的数组相加。
z = x + y
- 您可以将数组中的所有元素与某个标量相乘或相除。
z = 2*x y = x/3
MATLAB
中的基本统计函数可应用于某个向量以生成单个输出。可以使用max
函数来确定向量的最大值。xMax = max(x)
- MATLAB 的函数可在单个命令中对整个向量或值数组执行数学运算。
xSqrt = sqrt(x)
*
运算符执行矩阵乘法。因此,如果您使用*
将两个大小相同的向量相乘,则由于内部维度不一致,您将会收到一条错误消息。z = [3 4] * [10 20]
错误使用 * 用于矩阵乘法的维度不正确。
而
.*
运算符执行按元素乘法,允许您将两个大小相同的数组的对应元素相乘。z = [3 4] .* [10 20]
z = 30 80
任务
load datafile
data
density = data(:,2);
v1 = data(:,3);
v2 = data(:,4);
%%任务1 将 1 与 v1 的每个元素相加,然后将结果存储在名为 r 的变量中。
r = v1 + 1
%%任务2 创建一个向量 vs,它是向量 v1 和 v2 的和。
vs = v1 +v2
%%任务3 创建一个变量 va,其值为 vs/2(平均体积)。
va = vs / 2
%%任务4 创建一个变量 vm,其值为 va 向量的最大值。
vm = max(va)
%%任务5 使用 round 函数创建一个名为 vr 的变量,其中包含四舍五入为整数的平均体积 va。
vr = round(va)
%%任务6 创建一个名为 mass 的变量,其中包含 density 和 va 的按元素乘积。
mass = density .* va
%%您还可以对其他具有兼容大小的数组执行运算。例如,尝试执行以下语句:
x = [1 2;3 4;5 6; 7 8].*[1;2;3;4]
x 的大小是多少?
size
函数可以应用于数组,以生成包含数组大小的单个输出变量。s = size(x)
size
函数可以应用于矩阵,以生成单个输出变量或两个输出变量。使用方括号 ([ ]
) 获得多个输出。[xrow,xcol] = size(x)
- 可以使用
max
函数确定向量的最大值及其对应的索引值。max
函数的第一个输出为输入向量的最大值。执行带两个输出的调用时,第二个输出为索引值。[xMax,idx] = max(x)
- 如果只需函数的第二个输出,可以使用波浪号字符 (
~
) 忽略特定输出。例如,您可能只需要包含向量中最大值的索引:
density = data(:,2) [~,ivMax] = max(v2) densityMax = density(ivMax)
任务
%%任务1 创建一个名为 dsize 的变量,其值为 data 变量的大小。
dsize = size(data)
%%任务2 创建变量 dr 和 dc,其中分别包含变量 data 的行数和列数。
[dr,dc] = size(data)
%%任务3 创建变量 vMax 和 ivMax,其中分别包含 v2 向量的最大值和对应的索引值。
[vMax,ivMax] = max(v2)
%%试着获取 v2 中最小值的索引值。使用此索引从 density 中提取值。
density = data(:,2)
[~,ivMin] = min(v2)
densityMin = density(ivMin)
MATLAB
文档包含有用的示例和信息,可帮助您自行处理问题。您也可以使用
doc
函数打开文档。尝试使用如下代码打开randi
的文档:doc randi
%%任务
参考 randi 的文档以完成以下任务。
创建一个名为 x 的矩阵,
其中包含 1 到 20 范围的随机整数
行数为 5
列数为 7
x = randi(20,5,7)
%%搜索文档,用正态分布的整数(而非均匀分布的整数)重新创建相同的矩阵。
doc randi %%搜索文档
randn(5,7)
本文参考Matlab官网:https://matlabacademy.mathworks.com/
详细内容请自行访问官网链接