main content

基本矩阵运算 -凯发k8网页登录

以下示例演示了以 matlab® 语言处理矩阵的基本方法和函数。

首先,创建一个名为 a 且包含 9 个元素的简单向量。

a = [1 2 3 4 6 4 3 4 5]
a = 1×9
     1     2     3     4     6     4     3     4     5

现在,对向量 a 中的每个元素加 2,并将结果存储在一个新向量中。

请注意 matlab 不需要对向量或矩阵运算进行特殊的处理。

b = a   2
b = 1×9
     3     4     5     6     8     6     5     6     7

在 matlab 中创建图形就像执行一条命令一样简单。接下来用网格线来绘制向量和结果。

plot(b)
grid on

figure contains an axes object. the axes object contains an object of type line.

matlab 也可以创建包含轴标签的其他图表类型。

bar(b)
xlabel('sample #')
ylabel('pounds')

figure contains an axes object. the axes object with xlabel sample #, ylabel pounds contains an object of type bar.

matlab 也可以在绘图中使用符号。下面是用星号来标记各个点的一个示例。matlab 提供了多种符号和线型。

plot(b,'*')
axis([0 10 0 10])

figure contains an axes object. the axes contains a line object which displays its values using only markers.

matlab 擅长的一个方面是矩阵计算。

创建矩阵就像创建向量一样简单,可使用分号 (;) 分隔矩阵的各行。

a = [1 2 0; 2 5 -1; 4 10 -1]
a = 3×3
     1     2     0
     2     5    -1
     4    10    -1

可以很容易地计算矩阵 a 的转置。

b = a'
b = 3×3
     1     2     4
     2     5    10
     0    -1    -1

接下来,将这两个矩阵相乘。

同样请注意,matlab 不要求像处理数据集合一样处理矩阵。matlab 知道您正在处理矩阵并相应调整您的计算。

c = a * b
c = 3×3
     5    12    24
    12    30    59
    24    59   117

无需执行矩阵相乘,使用 .* 运算符即可将两个矩阵或向量的对应元素相乘。

c = a .* b
c = 3×3
     1     4     0
     4    25   -10
     0   -10     1

使用矩阵 a 对方程 a*x = b 求解,方法是使用 \(反斜杠)运算符。

b = [1;3;5]
b = 3×1
     1
     3
     5
x = a\b
x = 3×1
     1
     0
    -1

现在可以显示 a*x 等于 b。

r = a*x - b
r = 3×1
     0
     0
     0

matlab 拥有几乎所有用于常见矩阵计算的函数。

有用于获取特征值的函数...

eig(a)
ans = 3×1
    3.7321
    0.2679
    1.0000

...以及用于获取奇异值的函数。

svd(a)
ans = 3×1
   12.3171
    0.5149
    0.1577

“poly”函数生成特征多项式系数的向量。

矩阵 a 的特征多项式为

det(λi-a)

p = round(poly(a))
p = 1×4
     1    -5     5    -1

使用 roots 函数很容易确定多项式的根。

这些值实际上是原始矩阵的特征值。

roots(p)
ans = 3×1
    3.7321
    1.0000
    0.2679

除了矩阵计算之外,matlab 还有许多其他应用。

求两个向量的卷积...

q = conv(p,p)
q = 1×7
     1   -10    35   -52    35   -10     1

...或再次求卷积并绘制结果图。

r = conv(p,q)
r = 1×10
     1   -15    90  -278   480  -480   278   -90    15    -1
plot(r);

figure contains an axes object. the axes object contains an object of type line.

使用 whowhos 命令可随时获取内存中存储的变量列表。

whos
  name      size            bytes  class     attributes
  a         3x3                72  double              
  b         3x3                72  double              
  c         3x3                72  double              
  a         1x9                72  double              
  ans       3x1                24  double              
  b         3x1                24  double              
  p         1x4                32  double              
  q         1x7                56  double              
  r         1x10               80  double              
  x         3x1                24  double              

可以通过键入特定变量的名称来获取该变量的值。

a
a = 3×3
     1     2     0
     2     5    -1
     4    10    -1

每行可以有一条以上的语句,使用逗号或分号分隔各个语句。

如果未指定变量来存储操作的结果,则结果将存储在名为 ans 的临时变量中。

sqrt(-1)
ans = 0.0000   1.0000i

正如所见,matlab 在计算中很容易处理复数。

相关主题

    网站地图