Arrays 创建具有字符和递增数字的数组

Arrays 创建具有字符和递增数字的数组,arrays,matlab,Arrays,Matlab,非常简单的问题,我想在for循环中创建一个带有char的数组 代码: 我得到一个错误: In an assignment A(I) = B, the number of elements in B and I must be the same. 我只需要一个数组: [f_1 f_2 f_3....] 这是因为arr(i)是单个元素,而['f:',num2str(i)]包含三个字符。而且,对于i=1:length(1)来说,也没有什么意义,因为length(1)保证是1。我猜您想要I=1:l

非常简单的问题,我想在for循环中创建一个带有char的数组

代码:

我得到一个错误:

In an assignment  A(I) = B, the number of elements in B and I must be the same.
我只需要一个数组:

[f_1 f_2 f_3....]
这是因为
arr(i)
是单个元素,而
['f:',num2str(i)]
包含三个字符。而且,对于i=1:length(1)来说,
也没有什么意义,因为
length(1)
保证是
1
。我猜您想要I=1:length(a)
。如果是这种情况,我建议您用
numel
替换
length
,用
ii
替换
I

创建所需阵列的更好方法是像这样使用
sprintf

sprintf('f_%i\n',1:5)
ans =
f_1
f_2
f_3
f_4
f_5
或可能通过:

sprintf('f_%i ',1:5)    
ans =    
f_1 f_2 f_3 f_4 f_5 
我想这就是你真正想要的:

for ii = 1:5
    arr{ii} = ['f_', num2str(ii)];
end
arr =     
    'f_1'    'f_2'    'f_3'    'f_4'    'f_5'
或更简单:

arr = arrayfun(@(n) sprintf('f_%i', n), 1:5, 'UniformOutput', false)
最后两个可按如下方式编制索引:

arr{1}    
ans =    
f_1
您还可以执行(相同的结果):


如果您这样做是为了创建变量名,那么请不要这样做。请改用单元格或结构。

对不起,键入错误。我想写‘对于I=1:length(a)’
arr{1}    
ans =    
f_1
str = sprintf('f_%i\n', 1:5);
arr = strsplit(str(1:end-1), '\n')