for i=1:N
f(i) = 'f'+i;
end
在MatLab中显示错误。用模式fi的N个字符串初始化一个数组的正确语法是什么?
看起来就连这也不起作用:
for i=1:4
f(i) = 'f';
end
发布于 2011-12-08 02:02:09
您可以使用strcat
连接字符串。如果计划将数字连接为字符串,则必须首先使用num2str
将数字转换为字符串。
此外,字符串不能存储在向量或矩阵中,因此必须将f
定义为cell array,并且必须使用{
和}
(而不是普通的圆括号)对其进行索引。
f = cell(N, 1);
for i=1:N
f{i} = strcat('f', num2str(i));
end
发布于 2011-12-08 02:07:50
对于R2014a之前的版本...
一种简单的非循环方法是使用genvarname
创建字符串的cell array:
>> N = 5;
>> f = genvarname(repmat({'f'}, 1, N), 'f')
f =
'f1' 'f2' 'f3' 'f4' 'f5'
对于较新的版本...
函数genvarname
已被弃用,因此可以通过以下方式使用matlab.lang.makeUniqueStrings
来获得相同的输出:
>> N = 5;
>> f = strrep(matlab.lang.makeUniqueStrings(repmat({'f'}, 1, N), 'f'), '_', '')
f =
1×5 cell array
'f1' 'f2' 'f3' 'f4' 'f5'
发布于 2016-12-01 18:27:05
使用sprintf
已经由ldueck在评论中提出,但我认为这是一个值得回答的问题:
f(i) = sprintf('f%d', i);
在我看来,这是最具可读性的解决方案,也提供了一些很好的灵活性(例如,当你想舍入一个浮点值时,使用类似%.2f
的东西)。
https://stackoverflow.com/questions/8420147
复制相似问题