创建矩阵
基于帕斯卡三角形的项创建一个对称矩阵
A = pascal(3)
创建一个非对称幻方矩阵,它的行总和与列总和相等
B = magic(3)
由随机整数构成的 3×2 矩形矩阵:在这种情况下,randi
的第一个输入描述整数可能值的范围,后面两个输入描述行和列的数量。
C = randi(10,3,2)
自定义矩阵,使用中括号包起来,以逗号(,)或空格 隔开定义行,以分号(;)隔开定义列
u = [3; 1; 4]
v = [2 0 -1]
h=[5:10;10:15]
矩阵的运算
矩阵的加法和减法
矩阵和数组的加减法是逐个元素执行的,或者说是按元素执行的。
例如,A
加 B
之后再减去 A
又可以得到 B
:
X = A + B
X = 9 2 7 4 7 10 5 12 8
Y = X - A
Y = 8 1 6 3 5 7 4 9 2
向量乘积和转置
长度相同的行向量和列向量可以按任一顺序相乘。其结果是一个标量(称为内积)或一个矩阵(称为外积):
u = [3; 1; 4]; v = [2 0 -1]; x = v*u
x = 2
X = u*v
X = 6 0 -3 2 0 -1 8 0 -4
矩阵乘法
矩阵乘法是以这样一种方式定义的:反映底层线性变换的构成,并允许紧凑表示联立线性方程组。如果 A 的列维度等于 B 的行维度,或者其中一个矩阵为标量,则可定义矩阵乘积 C = AB。如果 A 为 m×p 且 B 为 p×n,则二者的乘积 C 为 m×n。该乘积实际上可以使用 MATLAB for
循环、colon
表示法和向量点积进行定义:
A = pascal(3); B = magic(3); m = 3; n = 3; for i = 1:m for j = 1:n C(i,j) = A(i,:)*B(:,j); end end
MATLAB 使用星号表示矩阵乘法,如 C = A*B
中所示。矩阵乘法不适用交换律;即 A*B
通常不等于 B*A
:
X = A*B
X = 15 15 15 26 38 26 41 70 39
Y = B*A
Y = 15 28 47 15 34 60 15 28 43
矩阵可以在右侧乘以列向量,在左侧乘以行向量:
u = [3; 1; 4]; x = A*u
x = 8 17 30
v = [2 0 -1]; y = v*B
y = 12 -7 10
矩形矩阵乘法必须满足维度兼容性条件:由于 A
是 3×3 矩阵,C
是 3×2 矩阵,因此可将二者相乘得到 3×2 结果(共同的内部维度会消去):
X = A*C
X = 24 17 47 42 79 77
但是,乘法不能以相反的顺序执行:
Y = C*A
Error using * Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.
您可以将任何内容与标量相乘:
s = 10; w = s*y
w = 120 -70 100
当您将数组与标量相乘时,标量将隐式扩展为与另一输入相同的大小。这通常称为标量扩展。