【问题标题】:MATLAB empty cell(n,m) array of strings?MATLAB空单元格(n,m)字符串数组?
【发布时间】:2012-01-17 13:39:48
【问题描述】:

创建空字符串元胞数组的最快方法是什么?

cell(n,m)

创建一个空的双精度元胞数组。

类似的命令如何创建空字符串?

【问题讨论】:

  • 我有这样的东西:strEmptyCell = {''};代表(strEmptyCell,n,m); ...有什么比这更好的吗?

标签: string matlab cell


【解决方案1】:

取决于您真正想要实现的目标。我想最简单的方法是:

repmat({''},n,m);

【讨论】:

  • 这是最短的写法。谢谢。
  • 是的,但 Kavka 的解决方案对于大单元来说更快
  • 如果您只使用 1D,这可能是一个(甚至更短的)替代方案:repelem({''},n);
【解决方案2】:

使用冒号操作符分配给所有单元格元素将完成这项工作:

m = 3; n = 5;
C = cell(m,n);
C(:) = {''}

【讨论】:

  • 使用repmatdeal 太过分了。带有冒号运算符的简单赋值工作正常。
  • 感谢您指出我的“交易”矫枉过正!你得到我的投票。试图删除我的答案,但它显然是这样工作的。不过,不确定 repmat 在这种情况下会是最糟糕的任务。
  • 需要一个链接来指出为什么 repmat 较慢...可能是这样的? blogs.mathworks.com/loren/2008/08/04/…
【解决方案3】:

由 cell(n,m) 创建的元胞数组包含空矩阵,而不是双精度数。 如果您确实需要使用空字符串预先填充元胞数组

test = cell(n,m);
test(:) = {''};
test(1,:) = {'1st row'};
test(:,1) = {'1st col'};

【讨论】:

    【解决方案4】:

    这是一篇非常老的帖子,但我想添加一种可能有效的方法。我不确定它是否适用于早期版本的 MATLAB。我尝试了 2018+ 版本并且它有效。 与其使用remat,不如像这样开始一个元胞字符串数组似乎更加方便和直观:

    C(1:10) = {''} % Array of empty char
    

    同样的方法可以用来生成其他数据类型的元胞数组

    C(1:10) = {""} % Array of empty string
    C(1:10) = {[]} % Array of empty double, same as cell(1,10)
    

    但要小心使用缩放器

    C(1:10) = {1} % an 1x10 cell with all values = {[1]}
    C(1:10) = 1 % !!!Error
    C(1:10) = '1' % !!!Error
    C(1:10) = [] % an 1x0 empty cell array
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      相关资源
      最近更新 更多