Matlab:如何将矩阵转化成 cell 元胞数组、mat2cell | 您所在的位置:网站首页 › 如何将数组转为矩阵 › Matlab:如何将矩阵转化成 cell 元胞数组、mat2cell |
目录 mat2cell() (1) C = mat2cell(A,dim1Dist,...,dimNDist) 例 1:二维 例 2:三维 (2) C = mat2cell(A,rowDist); % 按 dim1 划分 调用 Matlab 内置函数的方法 mat2cell()mat2cell函数的作用是将矩阵分割成不同cell元胞 语法:C = mat2cell(A,dim1Dist,...,dimNDist) C = mat2cell(A,rowDist) (1) C = mat2cell(A,dim1Dist,...,dimNDist)dim1Dist,...,dimNDist 是向量,表示具体怎么划分不同的维度 这种调用方法将 A 按不同的维度划分。A 可以是二维的,三维的,甚至更高维,首先看一张图,区分 A 的维度: 产生的元胞结构如图,相当于 dim1 和 dim2 的排列组合 具体划分如图 总结:1)划分要求:sum(dimNDist) = A.dimN; 2)划分后 C 的维度:size(C) = [length(dim1Dist),...,length(dimNDist)]. 例 2:三维理解了二维的转化,三维也是一样的,这里以mnist手写数据集中的维度作为例子: A = rand(28,28,60000); % 28*28*60000 double C = mat2cell(A,28,28,ones(1,60000)); % 1*1*60000 cell % 最后可以用 reshape(C,60000,1) 将 C 转成二维的。因为mnist每张图片的大小是28*28的,所以前两个维度不进行划分,将最后一个维度划分成60000份(60000张图片),这里 sum(ones(1,60000)) = 60000;那么最后得到的维度将是length(28)*length(28)*length(ones(1,60000)) = 28*28*60000; P.s.:(1)如果某个维度缺省了 A = rand(3,0,4); C = mat2cell(A,[1 2],[],[2 1 1]);二维: A = rand(3,100); C = mat2cell(A,[1 2]); 三维: A = rand(3,100,3); C = mat2cell(A,[1 2]);
本文主要参考 Matlab 的 help 文档 |
CopyRight 2018-2019 实验室设备网 版权所有 |