前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB 矩阵分块函数 mat2cell 及 cellfun 函数

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

作者头像
Alan Lee
发布2018-01-02 16:44:31
4.2K0
发布2018-01-02 16:44:31
举报
文章被收录于专栏:Small CodeSmall Code

为了清理桌面上的 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

matrix
matrix

mc mc{1,1} =

代码语言:javascript
复制
18    10     9
 3    13    32
36     3    29

mc{2,1} =

代码语言:javascript
复制
50    31    38
 9    39     8
 6    26    18
46     2     8
25    50    43

mc{3,1} =

代码语言:javascript
复制
43    26    17
41    17    14

mc{1,2} =

代码语言:javascript
复制
 1    30
41    41
25    50

mc{2,2} =

代码语言:javascript
复制
27    45
44    11
37     2
34    23
 9     1

mc{3,2} =

代码语言:javascript
复制
28    24
48    48

每一块的和 sum_of_everyone =

代码语言:javascript
复制
 153   188
 399   233
 158   148

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

END

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-01-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • END
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档