由于它以矩阵实验室的名字命名,意味着该软件在矩阵计算方面具有出色的性能。 一般来说,矩阵是指矩形阵列。 有两种特殊情况,一种是单个元素的标量,另一种是只有一行或一列的矩阵,即向量。 还有其他方法来存储数字和非数字数据,但对于初学者来说,最好将所有内容都视为矩阵,这样更容易使用。 设计理念是让所有操作尽可能自然。 其他编程语言在处理数据时一次只能处理一个值,但允许用户快速、轻松地操作矩阵。
1. 矩阵的创建和组合
最基本的数据结构是矩阵,一种二维的矩形数据,可以以易于使用的矩阵形式存储。 数据可以是数字、字符、逻辑状态(真或假),甚至是结构数组类型。 。 使用二维矩阵来存储单个值或线性序列。 同时支持二维以上数据结构。
1.1 创建一个简单的矩阵
它是一个基于矩阵的计算环境。 所有用户输入的数据都将以矩阵或多维数组的形式存储。 即使是数字标量,例如 100,也以矩阵形式存储。
[例 2-1] 单个标量的输入示例。
>> A = 100; % 输入值 A
>> whos % whos命令可以用来查看存储的变量信息
名称 大小 字节 类别
1x1 8
从这个例子可以看出,标量A的存储格式是1×1矩阵,占用8字节内存空间,数据类型是双精度浮点数。
创建矩阵最简单的方法是使用矩阵构造标识符,即方括号[]。 创建行向量只需在方括号内输入相应的元素,并使用空格或逗号作为分隔符来分隔相邻的元素。
>> 行 = [E1, E2, ..., En]
>> 行 = [E1 E2 ... En]
如果要输入矩阵中的下一行,只需使用分号作为行之间的分隔符:
>>A = [行1; 行2; ...; 罗恩]
例如,要创建包含5个元素的单行矩阵,可以在命令行中输入以下命令:
>> A = [12 62 93 -8 22];
[例2-2] 创建一个步长为2、区间为2~20的向量。
其中,可以通过“初始值:步长:最终值”的方法创建向量。 在本例中,您可以在命令窗口中输入:
>>a=2:2:20
按回车键,命令窗口显示如下:
一个=
2 4 6 8 10 12 14 16 18 20
需要指出的是,步长可以是正数、负数或小数。 如果用户在表达式中没有指定步长,则默认步长为1。例如:
>> b=1:10
乙 =
1 2 3 4 5 6 7 8 9 10
另外,如果用户指定的间隔不是步长的整数倍,则会使用初始值,依次加上步长,生成序列,如下c所示。
>> c=3:5:15
c =
3 8 13
[示例 2-3] 这是如何创建 3 行 5 列矩阵的示例。 需要指出的是,在矩阵的输入过程中,矩阵的每一行必须具有相同数量的元素。
>> A = [12 62 93 -8 22; 16 2 87 43 91; -4 17-72 95 6]
A=
12 62 93 -8 22
16 2 87 43 91
-4 17 -72 95 6
方括号标识符只能创建二维矩阵,包括0´0、1´1、1´n、m´n等类型。 如果你想创建多维矩阵,请继续关注公众号文章。 而如果您需要对矩阵中的某些元素进行读取和赋值,请继续关注。
在矩阵中输入带符号的值时,请注意符号后面必须跟有值,并且两者之间不能有空格。 您可以在下面的比较中看到差异。
[例 2-4] 矩阵中带符号数值输入的示例。
下面两个运算表达式的例子说明,符号和值之间是否有空格并不影响计算结果。
>>7-2+5
答案=
10
>>7-2+5
答案=
10
不过,下面两个例子说明,如果矩阵输入时符号和值之间有空格,结果就会不同。 读者在这方面一定要注意,避免计算结果出现错误。
>> [7 - 2 + 5]
答案=
10
>> [7 -2 +5]
答案=
7-2 5
1.2 创建特殊矩阵
有许多内置函数可以直接用来创建不同的特殊矩阵。 例如创建矩阵和矩阵。 表2-1列出了一些常用的特殊矩阵创建函数。 需要再次强调的是,函数名称区分大小写。 函数名一般都是小写。 如果转换其中一个字母的大小写,可能会调用另一个函数或出现调用错误。
表2-1 常用的特殊矩阵创建函数
函数名 函数 函数 函数名 函数 函数
Zeros 生成一个所有元素均为零的矩阵。
diag 生成对角矩阵 rand 随机生成均匀分布矩阵
one 生成一个所有元素等于 1 的矩阵 randn 随机生成一个正态分布矩阵
eye 生成单位矩阵,生成由指定整数元素随机分布组成的矩阵。
magic 生成魔方矩阵
[例2-5] 特殊矩阵创建函数示例。
>> Ones(4) % 创建一个所有元素都为1的矩阵
答案=
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> eye(5) % 创建单位矩阵
答案=
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
>> rand(2,3) % 创建一个 2´3 均匀分布随机数矩阵
答案=
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975
>> (7) % 创建一个由1:7组成的随机数序列
答案=
5 1 2 7 3 4 6
需要指出的是,每次运行随机函数都会得到不同的结果,因为默认情况下随机数种子是不同的。 这也是随机数的意义所在。 要使用函数生成相同的矩阵来验证运算结果,可以按如下方式设置随机种子状态:
>>兰特('状态',0);
>> (7)
答案=
2 7 4 3 6 5 1
通过这样的设置,读者可以获得与本书中相同的结果。
1.3 合并矩阵
矩阵合并是指将两个或多个矩阵合并在一起形成一个新的矩阵。 前面提到的矩阵标识符方括号[]不仅可以用来创建一个新的矩阵,还可以用来将多个矩阵合并在一起。
表达式 C = [AB] 将矩阵 A 和 B 水平连接在一起,而表达式 C = [A; B] 将矩阵 A 和 B 垂直连接在一起。
[例2-6] 求矩阵A和B在垂直方向上合并得到的矩阵C。
>> 兰特('状态', 0); % 设置随机种子,方便读者验证
>> A = 个(2, 5) * 6; % 2´5 矩阵,所有元素均为 6
>> B = 兰特(3, 5); % 3´5随机数矩阵
>> C = [A; B]
C=
6.0000 6.0000 6.0000 6.0000 6.0000
6.0000 6.0000 6.0000 6.0000 6.0000
0.9501 0.4860 0.4565 0.4447 0.9218
0.2311 0.8913 0.0185 0.6154 0.7382
0.6068 0.7621 0.8214 0.7919 0.1763
需要指出的是,矩阵合并过程中,新生成的矩阵必须保持矩形形状,否则会报错。 即如果要水平合并矩阵,每个子矩阵的行数必须相同; 如果要垂直合并矩阵,则每个子矩阵的列数必须相同。
如图2-1所示,图中行数相同的矩阵可以水平合并,但行数不同的矩阵不能水平合并。