|||
矩阵分块用mat2cell命令,其用法如下图所示(取自Matlab Help):
例1:矩阵 A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13], 将矩阵等分为4个2*2矩阵。
>> A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13]
A =
1 2 3 4
4 5 6 7
7 8 9 10
10 11 12 13
>> B=mat2cell(A,[2 2],[2 2])
B =
[2x2 double] [2x2 double]
[2x2 double] [2x2 double]
对每个分块进行运算,利用cellfun函数。
例2:求上述各个分块的平均值。
>> C=cellfun(@mean,cellfun(@mean,B,'UniformOutput',false))
C =
3 5
9 11
注意最里面的mean是求各块列平均,需要再平均一次才得到每一分块的总平均。应为最里面的mean运算后得到的是cell矩阵,所以false掉‘UniformOutput’参数。外面的一个mean运算得到的是数组,就不需要这样做了(默认的是不false)
例3:求上述各分块的总和。
>> D=cellfun(@sum,cellfun(@sum,B,'UniformOutput',false))
D =
12 20
36 44
这个例子展示了cell型矩阵的运算并不需要用新的函数,只是需要将对应的矩阵运算符与cellfun函数结合即可。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-1 07:20
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社