MATLAB矩阵分块函数mat2cell及cellfun函数
2016-01-11 21:45
639 查看
为了清理桌面上的word, so do this!
在做一个项目的时候,接触到了这个函数,瞬间感觉好有用,遂记录之。(好像有点废话……)
mat2cell函数就是将矩阵转化成胞元数组(cell array),用数学的语言讲就是矩阵分块。其意义和用法可以用matlab的帮助文档说清楚:
而cellfun函数就是对每一个块做相同的操作,例如求和、求均值等等,用这个函数就避免了写for循环了,也算是matlab向量化运算的一个例子。下面用一个例子说明之。
matrix
mc
mc{1,1} =
mc{2,1} =
mc{3,1} =
mc{1,2} =
mc{2,2} =
mc{3,2} =
每一块的和
sum_of_everyone =
OK,该睡觉了!明天还要考最坑爹的模式识别~
在做一个项目的时候,接触到了这个函数,瞬间感觉好有用,遂记录之。(好像有点废话……)
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,该睡觉了!明天还要考最坑爹的模式识别~
相关文章推荐
- MATLAB加快程序运行的方法:逻辑数组与向量化
- matlab 批量提取CNN特征
- Matlab 01~label矩阵和1-k~label向量的快速转换
- [Matlab]简单的人脸祛痘
- MATLAB中文件的读写和数据的导入导出
- Matlab小技巧
- asp.net与Matlab类型转换(待补全)
- asp.net下调用Matlab生成动态链接库
- matlab连接sql数据库
- matlab和C/C++混合编程--调用opencv
- matlab和C/C++混合编程--Mex
- matlab注释
- C++ 2010 与MATLAB2014a混合编程教程(1)
- 怎样在matlab中添加外部软件包
- Matlab——通信原理小程序
- matlab 工具之各种降维方法工具包,下载及使用教程,有PCA, LDA, 等等。。。
- Matlab多项式回归实现
- 搜索边缘链表算法之Matlab实现
- matlab 3D sphere err bar 在3D的球上显示对应点的误差
- matlab做偏最小二乘回归