矩阵是MATLAB最基本、最重要的数据对象。单个数据(标量)可以看成是矩阵的特例。所有MATLAB中的矩阵数据都按列存放。
一、矩阵的建立
1.直接输入法
* 将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
* 矩阵元素可以是运算表达式。
* 若“[ ]”中无元素表示空矩阵。
* 矩阵大小不需要预先定义。
例如:A = [1 2 3;4 5 6;7 8 9]
2.利用M文件建立矩阵
对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件或txt文件。即把矩阵的数据存放在M文件中,再导入即可。
3.利用MATLAB函数建立矩阵
* 几个产生特殊矩阵的函数:zeros、ones、eye、rand、randn。
* 这几个函数的调用格式相似,下面以产生零矩阵的zeros函数为例进行说明。其调用格式是:
zeros(m) 产生m×m零矩阵
zeros(m,n) 产生m×n零矩阵。
zeros(size(A)) 产生与矩阵A同样大小的零矩阵
* 相关的函数有:length(A)给出行数和列数中的较大者,即length(A)=max(size(A));
随机数矩阵:
* rand(m,n) 产生m×n矩阵,其中的元素是服从[0,1]上均匀分布的随机数。
* normrnd(mu,sigma,m,n)产生m×n矩阵,其中的元素是服从均值为mu,标准差为sigma的正态分布的随机数。
* exprnd(mu,m,n) 产生m×n矩阵,其中的元素是服从均值为mu的指数分布的随机数。
* poissrnd(mu,m,n) 产生m×n矩阵,其中的元素是服从均值为mu的泊松(Poisson)分布的随机数。
* unifrnd(a,b,m,n) 产生m×n矩阵,其中的元素是服从区间[a,b]上均匀分布的随机数。
随机置换:
* randperm(n)产生1到n的一个随机全排列。
* perms([1:n])产生1到n的所有全排列。
4.建立大矩阵
大矩阵可由方括号中的小矩阵建立起来。
例如:
A=[1 2 3;4 5 6;7 8 9];
C=[A,eye(size(A)); ones(size(A)),A]
冒号表达式
例如:
a=1:0.5:4
x=linspace(a,b,n)
% 创建从a开始,到b结束,有n个元素的等差行向量
x=logspace(a,b,n)
% 创建从10^a开始,到10^b结束,有n个元素的等比行向量.
二、矩阵拆分
1.矩阵元素
* MATLAB允许用户对一个矩阵的单个元素进行赋值和操作。例如
A(3,2)=200
* 也可以采用矩阵元素的序号来引用矩阵元素。矩阵元素按列编号,先第一列,再第二列,依次类推。
* 以m×n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
2.矩阵拆分
(1)利用冒号表达式获得子矩阵
①A(:,j)表示取A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行的全部元素;A(i,j)表示取A矩阵第i行、第j列的元素。
②A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素;A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素,A(i:i+m,k:k+m)表示取A矩阵第i~i+m行内,并在第k~k+m列中的所有元素。
此外,还可利用一般向量和end运算符等来表示矩阵下标,从而获得子矩阵。end表示某一维的末尾元素下标。
三、矩阵运算
1.基本算术运算
MATLAB的基本算术运算有:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)。
注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。
设A是可逆矩阵,Ax=B的解是A左除B即X=A\B;XA=B的解是A右除B,即X=B/A
2.点运算
点运算符有.*、./、.\和.^。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维参数相同。