【问题标题】:Matlab, Create one cell of some cellsMatlab,创建一些单元格的一个单元格
【发布时间】:2013-07-28 22:30:30
【问题描述】:

我有 3 个包含一些字符串 cell1、cell2 和 cell3 的元胞数组。我想将它们保存在一个单元格矩阵中。如果每个单元格的列大小是 col1 col2 和 col3。我想创建一个大小为 (max(col1,col2,col3)*3)) 的单元格。我该怎么做?

cellmarix{:,1}=cell1;
cellmarix{:,2}=cell2;
cellmarix{:,3}=cell3;

但这创建了一个大小为 (1*3) 的单元格。

我也用过

cellmatrix={cell1,cell2,cell3};

但结果是相同的 (1*3) 个单元格。

例如,如果我有

  cell1={
 'uzi'
 'julian'
 'ahyden'
 'kwayne'
 'riel'
 'gazook'
 'mustapha'
  }

cell2={
 'negro'
 'kris'
'sascha'
'jimw'
'andi'
'andrei'
 }

cell3={
'joncruz'
'youngsd'
'notzed'
'werner'
'cactus'
'Iain'
'faassen'
 }

结果是:

cell_all={
'uzi'        'negro'    'joncruz'
'julian'      'kris'    'youngsd'
'ahyden'      'sascha'  'notzed'
'kwayne'       jimw'    'werner'
'riel'        'andi'    'cactus'
'gazook'     'andrei'   'Iain'
'mustapha'      []      'faassen'
}

【问题讨论】:

  • 你能提供一个明确的例子吗?
  • cellmatrix={cell1;cell2;cell3} 呢?
  • @Dan 会产生一个单元格,显然这不是 OP 想要的。
  • @EitanT 感谢您的评论。我添加一个例子。
  • @Dan 谢谢。我添加一个例子。

标签: string matlab cell


【解决方案1】:
C = {'one','two','three'};
str = strjoin(C)

--> 见:

TMW: join cell

【讨论】:

  • 感谢您的回答。我更好地解释了我的问题。你明白我的意思吗?
  • 我猜你使用的是旧版本的 matlab,然后我会这样做-> 试试这个:strjoin
【解决方案2】:

您可以执行以下操作:

cell_all = cell1;
cell_all(1:numel(cell2), 2) = cell2;
cell_all(1:numel(cell3), 3) = cell3;

如果你有很多细胞(就像你说的那样),你可以诉诸循环:

n = 3; %// Number of columns
cell_all = cell1;
for k = 2:n
    varname = sprintf('cell%d', k);
    cell_all(1:numel(eval(varname)), 2) = eval(varname);
end

这是eval 真正有用的少数情况之一。但是,我不禁想知道为什么您的工作区中有这么多单元格变量,而不是从一开始就填充一个大型单元格数组。

【讨论】:

  • 谢谢,但是我有很多单元格。有没有更有效的解决方案?
  • 我们在谈论多少个单元格?为什么一开始不将它们的内容存储在一个通用的元胞数组中?
  • 对于超过 7000 列的大型矩阵,我需要更通用的解决方案。
  • @Fatime 那么您的工作区中有 7000 个不同的 cell 变量?
  • @Fatime 哇,这是很多变量。我已经更新了解决方案,但也许您应该考虑重新考虑您的方法并从一开始就生成一个大型公共单元阵列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 1970-01-01
  • 2021-12-16
  • 2013-02-01
相关资源
最近更新 更多