本文主要是介绍MATLAB 矩阵分块函数 mat2cell 及 cellfun 函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
为了清理桌面上的 words, so do this!
在做一个项目的时候,接触到了这个函数,瞬间感觉好有用,遂记录之。(好像有点废话……)
mat2cell
函数就是将矩阵转化成胞元数组(cell array),用数学的语言讲就是矩阵分块。其意义和用法可以用 matlab 的帮助文档说清楚:
而 cellfun
函数就是对每一个块做相同的操作,例如求和、求均值等等,用这个函数就避免了写 for 循环了,也算是 matlab 向量化运算的一个例子。下面用一个例子说明之。
% 生成一个 10*5 的随机矩阵,矩阵取值在 0 到 50 内的整数
matrix = randi(50, 10, 5);
% 转换成胞元数组
mc = mat2cell(matrix, [3 5 2], [3 2]);
% 求每一块的所有元素之和
sum_of_everyone = cellfun(@(x) sum(x(:)), mc)
matrix
mc
mc{1,1} =
18 10 93 13 32
36 3 29
mc{2,1} =
50 31 389 39 86 26 18
46 2 8
25 50 43
mc{3,1} =
43 26 17
41 17 14
mc{1,2} =
1 30
41 41
25 50
mc{2,2} =
27 45
44 11
37 2
34 239 1
mc{3,2} =
28 24
48 48
每一块的和
sum_of_everyone =
153 188399 233158 148
OK,该睡觉了!明天还要考最坑爹的模式识别~
END
这篇关于MATLAB 矩阵分块函数 mat2cell 及 cellfun 函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!