没有循环的MATLAB字符串单元格数组

时间:2018-12-26 00:16:22

标签: matlab cell

我正在使用循环创建我的单元格数组。它包含字符串“ 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'

2 个答案:

答案 0 :(得分:3)

我假设您想构建 a,而无需循环。按照您的示例,N = 10

方法1

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

这将在每个数字后建立一个带空格的char向量,删除最后的空格,在空格上分割并转置。

方法2

另一种方法:

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

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

答案 1 :(得分:3)

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

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