第二讲 矩阵运算
§1 基本矩阵运算元
我们在第一讲章已说明过 MATLAB 的运算是以数组(array)及矩阵 (matrix)
方式在做运算,而这二者在MATLAB的基本运算性质不同,数组强调元素对元素的运算,而矩阵则采用线性代数的运算方式。我们就来说明矩阵运算的特点。
以下将数组及矩阵的运算符号及其意义列出
数组运算符号 矩阵运算符号 功能 + - .* ./ .\\ .^ .' 利用这些运算符号即可进行以下的矩阵运算。 >> A=[2 5 1; 7 3 8; 4 5 21; 16 13 0]; >> A' % A的转置矩阵 A = 2 7 4 16 5 3 5 13 1 8 21 0
>> A=[4 -1 3]; B=[-2 5 2];
>> dot_prod = sum(A.*B) % 二个数组做内积 dot_prod = -7
>> c=dot(A,B) % 以dot函数也可做内积运算 c = -7
+ - * / \\ ^ ' 加 减 乘 左除 右除 次方 转置 >> A=[4; -1; 3];
>> dot_prod = sum(A'.*B); % 如果A是行数组则先做转置,再做内积 >> F=[2 5 -1]; G=[0 1 -3];
>> out_prod=F'*G; % 二矩阵做外积 >> A=[2,5,1; 0,3,-1]; >> B=[1,0,2; -1,4,-2; 5,2,1];
>> C=A*B % 矩阵相乘,注意二个矩阵的大小须相容 C = 2 22 -5 -8 10 -7
>> A=[2 1; 4 3];
>> A^2 % 矩阵次方 ans = 8 5 20 13
下面我们演示一个具体的例子。
假设我们把本地区的天气分为3种状态:晴,阴,雨。若今天天阴,则明天天晴的概率为1/2,阴的概率为1/4,下雨的概率为1/4。如果今天天阴,或者今天下雨,则明天天气是其它情况的概率会是其它的值,将这些概率值列入下面的表中。
天气状态转移概率表 今天 明天 晴 阴 雨 晴 3/4 1/8 1/8 阴 1/2 1/4 1/4 雨 1/4 1/2 1/4 表中的每一列对应于今天天气状态,它的每一行对应于明天天气状态。例如,第2行第3列(最后一列)的值为1/2,,这给出了今天下雨明天转阴的概率。
将上表内的概率数据用矩阵A表示
?3/41/21/4??? A??1/81/41/2?
?1/81/41/4???矩阵A中概率称为转移概率,矩阵A称为转移矩阵。
已知今天天气晴、阴、雨的概率,可以用转移矩阵A提供的数据来计算明天天气晴、阴、
?分别为明天天气?、p2?、p3雨的概率。记p1、p2、p3分别为今天天气是晴、阴、雨的概率,p1是晴、阴、雨的概率,两个列向量
???p1??p1?????? P??p2? P???p2?p??p???3??3?分别称为今日概率向量和明日概率向量,则有矩阵计算式 P??AP
以当前状态预测未来状态的概率模型称为Markov链。如果在清晨我们听到的天气预报为,今天阴或雨的概率都是1/2, 那么,今日概率向量P?(0,1/2,1/2)?。利用上式计算明日概率向量的Matlab操作是:
A=[3/4 1/2 1/4;1/8 1/4 1/2;1/8 1/4 1/4]; %输入矩阵A P=[0 1/2 1/2]'; %输入向量P P1=(A*P)' P1 =
3/8 3/8 1/4
这里,P1就是按行向量的形式输出的结果。明天天气为晴、阴的概率都是3/8,下雨的概率是1/4。
明日的概率向量可以用前面的Markov链求出,那么两天的概率向量可用公式 P???AP??A(AP?)?(A2)P 给出。这里需要计算A2,我们再用Matlab完成矩阵乘积的计算。 A2=A^2 A2 =
21/32 9/16 1/2 3/16 1/4 9/32 5/32 3/16 7/32