MATLAB3: 矩阵分块函数mat2cell 及 cellfun 函数

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

你可能感兴趣的:(MATLAB3: 矩阵分块函数mat2cell 及 cellfun 函数)