Matlab:如何将矩阵转化成 cell 元胞数组、mat2cell 您所在的位置:网站首页 如何将数组转为矩阵 Matlab:如何将矩阵转化成 cell 元胞数组、mat2cell

Matlab:如何将矩阵转化成 cell 元胞数组、mat2cell

2024-07-08 06:57| 来源: 网络整理| 查看: 265

目录

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 的维度:

                                                 

例 1:二维 A = rand(60,50); % 设 A = rand(A.dim1,A.dim2) 作个记号,方便后续的总结 C = mat2cell(A,[10,20,30],[20,30]); % C = mat2cell(A,dim1Dist,dim2Dist)

 产生的元胞结构如图,相当于 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]);

 (2) C = mat2cell(A,rowDist); % 按 dim1 划分

二维:

A = rand(3,100); C = mat2cell(A,[1 2]);

三维:

A = rand(3,100,3); C = mat2cell(A,[1 2]);

 

本文主要参考 Matlab 的 help 文档



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有