MATLAB中的数据全部以矩阵形式存储,因此了解MATLAB语言中矩阵的操作方法是很有必要的。

矩阵中的数据包含着大量的隐含信息,如果矩阵运算方法选择得当,我们往往会得到意想不到的结果。

例如我们可以把矩阵的乘积运算应用于基于关键字的图书检索。首先,我们把关键字作为一个矩阵,然后把图书名称作为一个矩阵,这两个矩阵相乘结果就可以作为检索结果。当然,我们需要对每本图书的关键字作比重分配,最后把矩阵运算结果从大到小的顺序显示在检索结果中。这个例子只是一个矩阵运算的简单应用。

下面介绍就介绍矩阵的创建、运算及分析方法。

  1. 矩阵的创建

    (1)直接输入法

    我们可以在MATLAB的命令窗口直接输入矩阵中每行每列的元素,从而构成矩阵。

Demo1

矩阵中的元素用“[]”括起来,矩阵中每一行元素之间用“;”分割,每一列元素用“,”或者空格分割开来。当矩阵比较小的时候,可以用该方法;而当矩阵较大时,直接输入就会比较费劲。

(2)文件输入法

当矩阵尺寸较大或为经常使用的数据矩阵时,则可以利用save命令将此矩阵保存为文件,在需要时利用load命令将数据调入工作环境中中即可。当文件中的数据无序排列时,可以利用reshape函数对调入的矩阵进行重排。reshape(X,m,n),它在矩阵总元素保持不变的前提下,将矩阵X重新排成mxn的二维矩阵。

(3)函数调用法

MATLAB中提供了一些创建特殊矩阵的函数,我们可以利用这些函数方便快捷的创建矩阵。

  • ones():产生全为1的矩阵;ones(n):产生n*n维的全1矩阵;ones(m,n):产生m*n维的全1矩阵;

  • eye():产生单位矩阵;

  • magic():产生魔方矩阵(方阵);魔方矩阵的每行、每列及两条对角线上的元素和都相等。对于n阶魔方阵,其元素由1,2,3,…,n^2共n^2个整数组成。

  • zeros():产生全0矩阵;

  • diag():产生对角矩阵;函数输入为一维向量,输出为以该向量为对角线的对角矩阵。

  • rand()函数:产生在0~1之间服从均匀分布的随机矩阵;

  • randn()函数:产生服从高斯分布的随机矩阵;

Demo2_1

Demo2_2

对于一个比较大的矩阵,其元素必然会和MATLAB所提供函数创建的有差别,但这并不代表我们就不能参与函数调用法创建矩阵。我们可以对矩阵加减乘除一个常数,也可以对矩阵中某些行和列的元素进行重新赋值。对矩阵中部分行列进行操作的方法,即获得原矩阵的子矩阵,采用x(m:n,q:l),表示选择对x矩阵m~n行和q~l列的元素进行操作。

Demo3

2.矩阵的运算和分析

  • diag(A):输出为矩阵A的对角线构成的列向量;

  • triu(A):输出为矩阵A的上三角阵;tril(A):输出为矩阵A的下三角阵;

  • rot90(A,k):输出为矩阵A逆时针旋转k*90度后的矩阵;

  • fliplr(A):将矩阵A进行左右翻转;flipud(A):将矩阵A进行上下翻转;

  • B=inv(A):求A的逆矩阵,满足AB=BA=E (E为单位矩阵)的条件;B=pinv(A):求A的伪逆矩阵,是对逆矩阵概念的延伸,也叫作广义逆矩阵,满足ABA=A,BAB=B 的条件;

  • det(A):输出为方阵A的行列式;

  • compan(p):输出为伴随矩阵,其中p是一个多项式的系数向量,高次幂系数排在前,低次幂排在后;

  • rank(A):输出为矩阵A的秩;

  • trace(A):输出为矩阵A的迹,即矩阵A的对角线上元素之和;

  • norm(V) :输出为向量V的范数,默认为2-范数;norm(V,1):计算向量V的1-范数;norm(V,2):计算向量V的2-范数;norm(V,inf):计算向量V的∞-范数。

  • eig(A):输出为矩阵A 的特征值和特征向量;

    (1) E=eig(A):求矩阵A的全部特征值,构成向量E。

    (2) [V,D]=eig(A):求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

    (3) [V,D]=eig(A,’nobalance’):与(2)类似,但(2)中先对A作相似变换后求矩阵A的特征值和特征向量,而(3)中直接求矩阵A的特征值和特征向量。

  • length(A):输出为矩阵A最长维的长度;

  • size(A):输出为矩阵A各维的长度;

Demo4_1

Demo4_2

  • 未完待续……

    最后,感谢您的耐心阅读。

相关推荐