文档

的矩阵MATLAB环境

本主题介绍如何在MATLAB中创建矩阵和执行基本矩阵计算®

MATLAB环境使用了这个术语矩阵表示在二维网格中包含实数或复数的变量。一个数组更一般地说,是一个向量、矩阵或更高维的数字网格。MATLAB中的所有数组都是矩形的,也就是说,沿任何维度的分量向量都是相同的长度。定义在矩阵上的数学运算是线性代数的课题。

创建矩阵

MATLAB有许多创建不同类型矩阵的函数。例如,你可以创建一个基于Pascal三角形的对称矩阵:

A = pascal(3)
A = 1 1 1 2 3 1 3 6

或者,你可以创建一个不对称的神奇方阵,具有相等的行和和和:

B =魔术(3)
B = 8 1 6 3 5 7 4 9 2

另一个例子是随机整数的3 × 2矩形矩阵。在这种情况下,第一个输入兰迪描述整数的可能值的范围,后两个输入描述行数和列数。

C = randi(10,3,2)
C = 9 10 10 7 2

列向量是an- × 1矩阵,行向量是1 × -矩阵n矩阵,标量是1 × 1矩阵。要手动定义矩阵,请使用方括号[]表示数组的开始和结束。在括号内,使用分号行尾:表示一行的末尾对于标量(1 × 1矩阵),不需要括号。例如,这些语句生成列向量、行向量和标量:

U = [3;1;4] v = [2 0 -1] s = 7
U = 3 1 4 v = 2 0 -1 s = 7

有关创建和使用矩阵的更多信息,请参见创建、连接和扩展矩阵

矩阵的加减法

矩阵和数组的加减法是逐个元素执行的,或者element-wise.例如,添加一个B然后是减法一个从恢复的结果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

加法和减法要求两个矩阵具有兼容的维度。如果维度不兼容,则会导致错误:

X = a + c
使用+矩阵维数的错误必须一致。

有关更多信息,请参见数组与矩阵运算

向量积和转置下载188bet金宝搏

长度相同的行向量和列向量可以任意顺序相乘。结果要么是一个标量,称为内积,或一个矩阵,称为外产品

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

对于实矩阵,转置操作交换一个j而且一个j.对于复矩阵,另一个考虑因素是是否取数组中复项的复共轭来形成复共轭转置.MATLAB使用撇号运算符()来执行复共轭转置,而点-撇号运算符(.')转置而不作共轭。对于包含所有实元素的矩阵,这两个运算符返回相同的结果。

示例矩阵A = pascal(3)对称的,所以一个“等于一个.然而,B =魔术(3)是不对称的,那么B”元素是否沿主对角线反射:

B =魔术(3)
B = 8 1 6 3 5 7 4 9 2
X = b '
X = 8 3 4 1 5 9 6 7 2

对于向量,转置将行向量转换为列向量(反之亦然):

X = v' X = 2 0 -1

如果x而且y两个列向量都是实的,那么乘积呢x * y不是定义,而是两个产物下载188bet金宝搏

x ' * y

而且

y ' * x

产生相同的标量结果。这个量使用非常频繁,它有三个不同的名称:内心的产品,标量产品,或者产品。甚至还有一个专门的点积函数叫做下载188bet金宝搏

对于复向量或复矩阵,z,数量z”不仅将矢量或矩阵转置,而且将每个复元素转换为其复共轭。也就是说,每个复元素虚部的符号变化。例如,考虑一个复矩阵

Z = [1+2i 7-3i 3+4i;6-2i 9i 4+7i]
Z = 1.0000 + 2.0000i 7.0000 - 3.0000i 3.0000 + 4.0000i 6.0000 - 2.0000i 0.0000 + 9.0000i 4.0000 + 7.0000i

的复共轭转置z是:

z”
Ans = 1.0000 - 2.0000i 6.0000 + 2.0000i 7.0000 + 3.0000i 0.0000 - 9.0000i 3.0000 - 4.0000i 4.0000 - 7.0000i

非共轭复转置,其中每个元素的复部分保留其符号,表示为z”。

z”。
Ans = 1.0000 + 2.0000i 6.0000 - 2.0000i 7.0000 - 3.0000i 0.0000 + 9.0000i 3.0000 + 4.0000i 4.0000 + 7.0000i

对于复向量,两个标量积下载188bet金宝搏x ' * y而且y ' * x复数是相互共轭的吗,和标量积x ' * x是实数。

矩阵乘法

矩阵乘法的定义反映了基本线性变换的组成,并允许联立线性方程组的紧凑表示。矩阵乘积CAB的列维一个等于的行维数B,或者当其中一个是标量时。如果一个——- - - - - -p而且Bp——- - - - - -n,它们的乘积C——- - - - - -n.这个乘积可以用MATLAB来定义循环,结肠符号和向量点积:下载188bet金宝搏

A = pascal(3);B =魔术(3);M = 3;N = 3;I = 1:m1:n C(i,j) = A(i,:)*B(:,j);结束结束

MATLAB使用星号表示矩阵乘法,如C = a * b.矩阵乘法不是可交换的;也就是说,A * B通常不等于B *

X = a * b
X = 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

矩形矩阵乘法必须满足尺寸相容条件。自一个3 × 3和C是3 × 2,你可以将它们相乘得到3 × 2的结果(公共内部维度抵消了):

X = a * c
X = 24 17 47 42 79 77

然而,如果乘法运算的顺序相反,则不会起作用:

Y = c * a
使用*不正确的矩阵乘法维数的错误。检查第一个矩阵的列数是否与第二个矩阵的行数相匹配。要执行elementwise乘法,请使用'.*'。

你可以用标量乘任何东西:

S = 10;W = s*y
W = 120 -70 100

当将数组乘以标量时,标量隐式展开为与其他输入相同的大小。这通常被称为标量扩张

单位矩阵

一般接受的数学符号使用大写字母用来表示单位矩阵,即主对角线上是1,其他地方是0的各种大小的矩阵。这些矩阵有这样的性质一个一个而且一个一个只要维度是兼容的。

原来版本的MATLAB无法使用因为它不区分大写字母和小写字母已经用作下标和复数单位。于是一个英语双关语就出现了。这个函数

眼睛(m, n)

返回一个——- - - - - -n矩形单位矩阵和眼睛(n)返回一个n——- - - - - -n方阵单位矩阵。

矩阵的逆

如果一个矩阵一个是方的和非奇异的(非零行列式),那么方程呢一个X而且X一个有相同的解决方案X.这个解叫做一个并表示为一个-1.的发票函数和表达式^ 1两者都计算矩阵的逆。

A = pascal(3)
A = 1 1 1 2 3 1 3 6
X = inv(A)
X = 3.0000 -3.0000 1.000 -3.0000 5.0000 -2.0000 1.000 -2.0000 1.000
* X
Ans = 1.0000 00 0.0000 1.0000 -0.0000 -0.0000 0.0000 1.0000

行列式计算了依据是由矩阵描述的线性变换的比例因子的度量。当行列式为零时,矩阵为单数不存在逆矩阵。

d = det(A)
D = 1

有些矩阵是近奇异,尽管存在一个逆矩阵的事实,计算容易受到数值误差的影响。的气孔导度函数计算反演条件号,表明了矩阵反演结果的准确性。条件编号的范围为1对于一个数值稳定的矩阵对于一个奇异矩阵。

c = cond(A)
C = 61.9839

很少需要形成一个矩阵的显式逆。经常滥用发票在求解线性方程组时出现一个xb.从执行时间和数值精度的角度来看,解决这个方程的最佳方法是使用矩阵反斜杠运算符x = A\b.看到mldivide更多信息。

克罗内克张量积

克罗内克积,克隆亚麻(X, Y)的所有可能的乘积所形成的较大的矩阵下载188bet金宝搏X和那些Y.如果X——- - - - - -n而且Yp——- - - - - -,然后克隆亚麻(X, Y)国会议员——- - - - - -nq.元素的排列方式使每一个元素X乘以整个矩阵Y

[x (1,1)* y x (1,2)* y…]X(1,n)*Y…X(m,1)*Y X(m,2)*Y…X (m, n) * Y]

克罗内克积常用于0和1的矩阵,以建立小矩阵的重复副本。例如,如果X是2 × 2矩阵吗

X = [1 2 3 4]

而且I =眼(2,2)为2 × 2单位矩阵,则:

克隆亚麻(X,我)
Ans = 1 0 2 0 0 1 0 2 3 0 4 0 0 3 0 4

而且

克隆亚麻(I (X)
Ans = 1 2 0 0 3 4 0 0 0 0 1 2 0 0 3 4

除了克隆亚麻,其他一些对复制数组有用的函数是repmatrepelem,blkdiag

向量和矩阵规范

p向量的-范数x

x p | x | p 1 p

计算公式为规范(x, p).的任何值都可以定义此操作p> 1,但最常见的值p分别是1 2和∞。默认值为p= 2,对应于欧几里得长度向量的大小

V = [2 0 -1];[norm(v,1) norm(v) norm(v,inf)]
Ans = 3.0000 2.2361 2.000

p矩阵的-范数一个

一个 p 马克斯 x 一个 x p x p

可计算为p= 1,2和∞by规范(A, p).同样,默认值为p= 2:

A = pascal(3);[norm(A,1) norm(A) norm(A,inf)]
Ans = 10.0000 7.8730 10.0000

如果您想计算矩阵的每一行或每一列的范数,您可以使用vecnorm

vecnorm (A)
Ans = 1.7321 3.7417 6.7823

使用线性代数函数的多线程计算

MATLAB支金宝app持多线程计算一些线性代数和元素智能数值函数。这些函数在多个线程上自动执行。为了让一个函数或表达式在多个cpu上执行得更快,必须满足以下条件:

  1. 该函数执行的操作很容易划分为并发执行的部分。这些部分必须能够在进程之间很少通信的情况下执行。它们应该需要很少的连续操作。

  2. 数据量足够大,因此并发执行的任何优点都超过了划分数据和管理独立执行线程所需的时间。例如,大多数函数只有在数组包含数千个或更多元素时才会加速。

  3. 该操作不受内存限制;处理时间不受内存访问时间的支配。一般来说,复杂的函数比简单的函数更快。

矩阵相乘(X * Y)矩阵幂(X ^ p)运算符在大型双精度数组(10,000个元素的数量级)上显示出显著的速度提高。矩阵分析函数依据rcond赫斯,expm还显示了在大型双精度阵列上速度的显著提高。

相关的话题