• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab中cell2mat的使用

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  binIndices是1*50的cell,每个cell是的1*n(n不定),那么cell2mat(binIndices)得到的是1*sum(cellfun(@length,binIndices))的行向量,比如{1 2 3} {4 5 6}2个cell,得到的是[1 2 3 4 5 6]的行向量。

  这样我以为是按列组织,其实不是这样的,估计是按行。

K>> aa = cell{[1;2;3] [4;5;6]}
 aa = cell{[1;2;3] [4;5;6]}              
错误: 圆括号或方括号不对称或异常。
K>> aa = cell{[1;2;3];[4;5;6]}
 aa = cell{[1;2;3];[4;5;6]}              
错误: 圆括号或方括号不对称或异常。
K>> aa = {[1;2;3];[4;5;6]}
aa = 
    [3x1 double]
    [3x1 double]
K>> bb=cell2mat(aa)
bb =
     1
     2
     3
     4
     5
     6

   ...................................................

  单纯说按行按列不好理解,直接看例子,明白就好。

K>> aa = {[1;2;3] [4;5;6]}
aa = 
    [3x1 double]    [3x1 double]
K>> bb = cell2mat(aa)
bb =
     1     4
     2     5
     3     6

  那么究竟该如何理解呢?看例子。

看matlab给的例子。
Example:
     C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};
     M = cell2mat(C)
结果:
  M =
     1     2     3     4
     5     6     7     8
     9    10    11    12

  在学习神经网络,BP网络函数里我也遇到这个问题,现在可以解释了。
  cell是元胞数组,mat是matrix的缩写。
  首先,C = {[1] [2 3 4]; [5; 9] [6 7 8; 10 11 12]};
  C元素以“;”为间隔,有两行,没一行也有两个子元素。得到
  C{1,1}=1; %为一行一列
  C{1,2}=2 3 4; %为一行三列
  C{2,1}=5
      9; %为两行一列
  C{2,2}=6 7 8
      10 11 12; %为两行三列
  上面这几个可以在matlab里运行求出来。反别将这几组数据结合起来。
  [C{1,1} C{1,2};
  C{2,1} C{2,2}];得到
  [1 2 3 4;
  5 6 7 8;
  9 10 11 12];

  笔者注:从解析可以看出就是直接按行拼接成了矩阵,但由于元宝数组内数据可以不同为,矩阵内必须同维,所以应该不是所有的元宝素组都能转化为矩阵。

  再看一个例子,a是1*50的cell,每个cell是1*26,那么cell2mat(a)是1*(50*26)的行向量,如果cell2mat(a\')得到50*26。 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab 相关代码记录发布时间:2022-07-18
下一篇:
matlab离散数据绘图 - 不做程序猿发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap