mat2cell函数是将矩阵转换成单元阵列(cell array ),在数学语言中是矩阵的块。 其含义和使用方法可以在matlab的帮助文档中清楚地说出来。
另一方面,cellfun函数是求加法、求平均值等对所有块进行相同操作的函数,通过使用该函数可以避免写for循环,也是matlab量化运算的一个例子。 让我举一个例子来说明。
%生成10*5的随机矩阵,矩阵为0到50的整数matrix=任性的毛巾(50,10,5 ); 变换为%单元阵列MC=mat2cell(matrix,[3 5 2],[3 2] ); %求每个块中所有元素之和sum_of_everyone=cellfun(@ ) x ) sum ) x ) : ),mc ) 123456 123456 matrix
MCMC { 1,1 }=
181093133236329 MC { 2,1 }=
031389398626184628255043 MC { 3,1 }=
32617411714 MC { 1,2 }=
13041412550 MC { 2,2 }=
2454411372342391 MC { 3,2 }=
28 2448 48
对每一块进行运算,利用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函数就可以了。