MATLAB 矩阵分块函数 mat2cell 及 cellfun 函数
一、矩阵分块函数 mat2cell
mat2cell 函数就是将矩阵转化成胞元数组(cell array),用数学的语言讲就是矩阵分块。x是60*50的大矩阵。
mat2cell函数
二、cellfun 函数
cellfun 函数就是对每一个块做相同的操作,例如求和、求均值等等,用这个函数就避免了写 for 循环了,也算是 matlab 向量化运算的一个例子。
三、还原分块矩阵函数cell2mat
y=cell2mat(c)
这里y相当于大矩阵x
四、例1求每一块的所有元素之和
% 生成一个 6*5 的随机矩阵,矩阵取值在 0 到 30 内的整数
matrix = randi(30, 6, 5);
% 转换成胞元数组
mc = mat2cell(matrix, [1 2 3], [3 2]);
% 求每一块的所有元素之和
sum_of_everyone = cellfun(@(x) sum(x(:)), mc)
>> matrix
matrix =
21 8 10 5 1
5 12 7 21 23
14 18 20 11 11
20 30 22 26 25
3 2 17 29 6
16 8 3 23 20
>> mc{1,1}
ans =
21 8 10
>> mc{1,2}
ans =
5 1
>> sum_of_everyone = cellfun(@(x) sum(x(:)), mc)
sum_of_everyone =
39 6
76 66
121 129