菜单

MATLAB教学(一)基本矩阵运算

2017-11-03 - IT小知识
MATLAB教学(一)基本矩阵运算

这个例子展示了在MATLAB语言中处理矩阵的基本技术和功能。

首先,让我们创建一个简单的向量,它有9个元素,叫做 a 。

a = [1 2 3 4 6 4 3 4 5]
>> a = 

     1     2     3     4     6     4     3     4     5

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

Notice how MATLAB requires no special handling of vector or matrix math.

b = a + 2
>> b = 

     3     4     5     6     8     6     5     6     7

在MATLAB中创建图形就像一个命令一样简单。让我们把向量加法的结果用网格线画出来。

plot(b)
grid on

MATLAB也可以使用轴标签来制作其他图形类型。

bar(b)
xlabel('Sample #')
ylabel('Pounds')

MATLAB也可以在绘图中使用符号。这里有一个用星星标出分数的例子。MATLAB提供了多种其他符号和线型。

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

MATLAB擅长的一个领域是矩阵计算。

创建一个矩阵很容易使一个矢量,用分号(;)将一个矩阵的行。

A = [1 2 0; 2 5 -1; 4 10 -1]
>> A = 

     1     2     0
     2     5    -1
     4    10    -1

我们可以很容易地找到矩阵A的转置。

B = A'
>> B = 

     1     2     4
     2     5    10
     0    -1    -1

现在让我们把这两个矩阵相乘。

请注意,MATLAB并不要求你处理矩阵作为一个数字集合。MATLAB知道何时处理矩阵,并据此调整计算。

C = A * B
>> C = 

     5    12    24
    12    30    59
    24    59   117

我们不使用矩阵乘法,而是使用*运算符相乘两个矩阵或向量的相应元素。

C = A .* B
>> C = 

     1     4     0
     4    25   -10
     0   -10     1

让我们用矩阵的求解方程,* x = B,我们通过使用\(反斜杠)算子。

b = [1;3;5]
>> b = 

     1
     3
     5

x = A\b
>> x = 

     1
     0
    -1

现在我们可以证明一个x等于b。

r = A*x - b
>> r = 

     0
     0
     0

MATLAB具有几乎所有类型的公共矩阵计算的功能。

有获得特征值的函数…

eig(A)
>> ans = 

    3.7321
    0.2679
    1.0000

…奇异值。

svd(A)
>> ans = 

   12.3171
    0.5149
    0.1577

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

矩阵A的特征多项式是

p = round(poly(A))
>> p = 

     1    -5     5    -1

我们可以用根函数很容易地找到多项式的根。

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

roots(p)
>> ans = 

    3.7321
    1.0000
    0.2679

MATLAB在矩阵计算之外有许多应用。

两向量的卷积…

q = conv(p,p)
>> q = 

     1   -10    35   -52    35   -10     1

或卷积的结果。

r = conv(p,q)
>> r = 

     1   -15    90  -278   480  -480   278   -90    15    -1

plot(r);

在任何时候,我们都可以使用who命令来存储我们存储在内存中的变量的列表。

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 = 

     1     2     0
     2     5    -1
     4    10    -1

你可以用逗号或分号分隔每个表有一个以上的声明在一行。

如果你不指定一个变量来存储操作的结果,其结果是存储在临时变量一样。

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

正如你所看到的,MATLAB在计算中很容易处理复数。

下一节:基本矩阵操作

 

。。。。

打赏作者
标签:

MATLAB教学(一)基本矩阵运算》有1个想法

  • Pingback 引用通告: MATLAB基础教学 | Hannes的站点

  • 发表评论

    邮箱地址不会被公开。 必填项已用*标注