您的位置:首页 > 编程语言 > MATLAB

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

2016-01-11 21:45 639 查看
为了清理桌面上的word, 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     9
3    13    32
36     3    29


mc{2,1} =

50    31    38
9    39     8
6    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    23
9     1


mc{3,2} =

28    24
48    48


每一块的和

sum_of_everyone =

153   188
399   233
158   148


OK,该睡觉了!明天还要考最坑爹的模式识别~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: