MATLAB无环串单元阵列

MATLAB无环串单元阵列,matlab,cell,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' 我假设您想要构建一个没有循环的a。

我正在使用一个循环来创建我的单元格数组。它包含字符串“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'
我假设您想要构建一个没有循环的
a
。让
N=10
符合您的示例

方法1 这将构建一个字符向量,每个数字后面都有一个空格,删除最后的空格,在空格上拆分,并进行转置

方法2 另一种方法:

a = deblank(cellstr(strcat('A', strjust(num2str((1:10).'), 'left'))));
这将
'A'
与数字连接起来,形成带有一些空格的2D字符数组;将每行中的空格向右移动;将每行转换为一个单元格;并删除每个单元格上的尾随空格。

我假设您希望构建一个不带循环的
a
。让
N=10
符合您的示例

方法1 这将构建一个字符向量,每个数字后面都有一个空格,删除最后的空格,在空格上拆分,并进行转置

方法2 另一种方法:

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

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

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

"A"+(1:10)'

如果你有R2017a或以后考虑使用字符串数组代替Car向量的单元格数组。可以使用创建字符串数组

"A"+(1:10)'

循环有什么问题?我打赌它比下面任何一个选项都快。这个循环有什么问题?我打赌它比下面的任何一种选择都要快。谢谢。我需要习惯字符串数组。由于它是一种新的数据类型,我仍然不知道它的可能性和局限性,但我想它在未来将比字符数据类型更有用。谢谢。我需要习惯字符串数组。由于它是一种新的数据类型,我仍然不知道它的可能性和局限性,但我想它在未来将比字符数据类型更有用。