【问题标题】:MATLAB string cell array without loop没有循环的 MATLAB 字符串元胞数组
【发布时间】:2018-12-26 00:16:21
【问题描述】:

我正在使用循环来创建我的元胞数组。它包含字符串“A1”到“A10”。 有没有办法不使用循环进行迭代?

a = cell( 10, 1 );
for i = 1 : length( a )
   a{i} = [ 'A', num2str( i ) ];
end

a = 

    'A1'
    'A2'
    'A3'
    'A4'
    'A5'
    'A6'
    'A7'
    'A8'
    'A9'
    'A10'

【问题讨论】:

  • 循环有什么问题?我敢打赌,它比以下任何替代方案都快。

标签: matlab cell


【解决方案1】:

我假设你想构建 a 没有循环。按照你的例子让N = 10

方法一

a = sprintf('A%i ', 1:N);
a = a(1:end-1);
a = strsplit(a).';

这会构建一个字符向量,每个数字后面都有一个空格,删除最后的空格,在空格上拆分,然后转置。

方法2

另一种方法:

a = deblank(cellstr(strcat('A', strjust(num2str((1:10).'), 'left'))));

这将'A' 与数字连接起来形成一个带有一些空格的二维字符数组;将每行中的空格向右移动;将每一行转换为一个单元格;并删除每个单元格上的尾随空格。

【讨论】:

    【解决方案2】:

    如果您有 R2017a 或更高版本,请考虑使用字符串数组而不是 char 向量元胞数组。您可以使用

    创建您的字符串数组
    "A"+(1:10)'
    

    【讨论】:

    • 谢谢。我需要习惯使用字符串数组。由于它是一种新的数据类型,我仍然不知道它的可能性和局限性,但我想它将来会比字符数据类型更有用。
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 2011-02-07
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多