首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何连接字符串+ i?

如何连接字符串+ i?
EN

Stack Overflow用户
提问于 2011-12-08 01:57:23
回答 5查看 186.5K关注 0票数 81
for i=1:N
   f(i) = 'f'+i;
end

在MatLab中显示错误。用模式fi的N个字符串初始化一个数组的正确语法是什么?

看起来就连这也不起作用:

for i=1:4
  f(i) = 'f';
end
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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
票数 121
EN

Stack Overflow用户

发布于 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'
票数 24
EN

Stack Overflow用户

发布于 2016-12-01 18:27:05

使用sprintf已经由ldueck在评论中提出,但我认为这是一个值得回答的问题:

f(i) = sprintf('f%d', i);

在我看来,这是最具可读性的解决方案,也提供了一些很好的灵活性(例如,当你想舍入一个浮点值时,使用类似%.2f的东西)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8420147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档