MATLAB学习_矩阵与向量操作

矩阵与向量的创建在上一篇文章中已经提到,所以这里直接进行操作和运算

运算

现有一矩阵a:

>> a = [1 2 3; 4 5 6; 7 8 10]
a =
     1     2     3
     4     5     6
     7     8     10

矩阵与常数相加

>> a + 10
ans =
    11    12    13
    14    15    16
    17    18    20
>> sin(a)
ans =
    0.8415    0.9093    0.1411
   -0.7568   -0.9589   -0.2794
    0.6570    0.9894   -0.5440

转置矩阵

>>a'
ans =
     1     4     7
     2     5     8
     3     6     10

逆矩阵

>> inv(a)
ans =
   -0.6667   -1.3333    1.0000
   -0.6667    3.6667   -2.0000
    1.0000   -2.0000    1.0000

标准矩阵乘法

>> p = a*inv(a)
p =
    1.0000         0         0
    0.0000    1.0000         0
    0.0000   -0.0000    1.0000

请注意,p 不是整数值矩阵。MATLAB 将数字存储为浮点值,算术运算可以区分实际值与其浮点表示之间的细微差别。使用 format 命令可以显示更多小数位数:

>> format long
>> p = a*inv(a)
p =
   1.000000000000000                   0                   0
   0.000000000000002   1.000000000000000                   0
   0.000000000000002  -0.000000000000004   1.000000000000000

format 仅影响数字显示,而不影响 MATLAB 对数字的计算或保存方式。

元素级乘法

使用.*运算符

>> a .* 3
ans =
     3     6     9
    12    15    18
    21    24    30

>> a .* a
ans =
     1     4     9
    16    25    36
    49    64   100

乘法、除法和幂的矩阵运算符分别具有执行元素级运算的对应数组运算符。例如,计算 a 的各个元素的三次方:

>> a .^ 3
ans =
           1           8          27
          64         125         216
         343         512        1000

复数

复数包含实部和虚部,虚数单位是 -1 的平方根。

>> sqrt(-1)
ans =
   0.0000 + 1.0000i

要表示复数的虚部,请使用 i 或 j,例如:

>> c = [3+4i, 4+3j; -i, 10j]
c =
   3.0000 + 4.0000i   4.0000 + 3.0000i
   0.0000 - 1.0000i   0.0000 +10.0000i

操作

获取尺寸

>> size(a)
ans =
     3     3

实际上,size()命令返回的是一个 1×2 的矩阵,我们可以用sz来存放。

设置 sz = size(a)

因此 就是一个1×2的矩阵,第一个元素是3,第二个元素是3。

也可以使用length(),它将返回最大维度的大小:

>> v = [1 2 3 4];
>> length(v)
ans =
     4

>> length(a)
ans =
     3

数组索引

引用数组中的特定元素有两种方法。最常见的方法是指定行和列下标,例如

>> a(2, 3)
ans =
     6

另一种方法不太常用,但有时非常有用,即使用单一下标按顺序向下遍历每一列,称为线性索引

>> a(8)
ans =
     6

如果尝试在赋值语句右侧引用数组外部元素,MATLAB 会引发错误。

>> a(5,5)
位置 1 处的索引超出数组边界(不能超出 3)

不过,您可以在赋值语句左侧指定当前维外部的元素。数组大小会增大以便容纳新元素。

>> a(5, 5) = 33
a =
     1     2     3     0     0
     4     5     6     0     0
     7     8    10     0     0
     0     0     0     0     0
     0     0     0     0    33

>> size(a)
ans =
     5     5

引用多个数组元素,请使用冒号运算符,这使您可以指定一个格式为 start:end 的范围。

>> a(1:3, 2:3)
ans =
     2     3
     5     6
     8    10

单独的冒号(没有起始值或结束值)指定该维中的所有元素。

串联

串联是连接数组以便形成更大数组的过程。

实际上,第一个数组是通过将其各个元素串联起来而构成的。成对的方括号 [] 即为串联运算符。

>> A = [a, a]
A =
     1     2     3     1     2     3
     4     5     6     4     5     6
     7     8    10     7     8    10

>> A = [a; a]
A =
     1     2     3
     4     5     6
     7     8    10
     1     2     3
     4     5     6
     7     8    10

参考MATLAB快速入门

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus