MATLAB 矩阵分块函数 mat2cell 及 cellfun 函数

  • 2026-08-24 22:45:08

为了清理桌面上的 words, so do this!

在做一个项目的时候,接触到了这个函数,瞬间感觉好有用,遂记录之。(好像有点废话……)

mat2cell 函数就是将矩阵转化成胞元数组(cell array),用数学的语言讲就是矩阵分块。其意义和用法可以用 matlab 的帮助文档说清楚:

而 cellfun 函数就是对每一个块做相同的操作,例如求和、求均值等等,用这个函数就避免了写 for 循环了,也算是 matlab 向量化运算的一个例子。下面用一个例子说明之。

代码语言:javascript复制% 生成一个 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} =

代码语言:javascript复制18 10 9

3 13 32

36 3 29mc{2,1} =

代码语言:javascript复制50 31 38

9 39 8

6 26 18

46 2 8

25 50 43mc{3,1} =

代码语言:javascript复制43 26 17

41 17 14mc{1,2} =

代码语言:javascript复制 1 30

41 41

25 50mc{2,2} =

代码语言:javascript复制27 45

44 11

37 2

34 23

9 1mc{3,2} =

代码语言:javascript复制28 24

48 48每一块的和

sum_of_everyone =

代码语言:javascript复制 153 188

399 233

158 148OK,该睡觉了!明天还要考最坑爹的模式识别~

END