Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在循环中连接字符串?_String_Matlab - Fatal编程技术网

String 如何在循环中连接字符串?

String 如何在循环中连接字符串?,string,matlab,String,Matlab,如何在循环中连接字符串? 例如,我有一个字符数组 fruits = char('apple','pear') 我想看看这个输出 apple tart pear tart 但是当我使用这个循环时: for f = fruits' strcat(f," tart") end 输出是 ans = a tart p tart p tart l tart e tart ans = p tart e tart a tart r tart tart 事实上,我需要它来读取目录中的

如何在循环中连接字符串? 例如,我有一个字符数组

fruits = char('apple','pear')
我想看看这个输出

  apple tart
  pear tart
但是当我使用这个循环时:

for f = fruits'
  strcat(f," tart")
end
输出是

ans =

a tart
p tart
p tart
l tart
e tart

ans =

p tart
e tart
a tart
r tart
 tart 
事实上,我需要它来读取目录中的一堆csv文件。文件名的一部分是我想循环使用的变量。例如,我的目录包含以下2个文件,我想从中读取数据:

peartart.csv
appletart.csv

这很好,但是我无法控制文件中的
fruit
变量名。我希望控制此变量,因为我将对每个水果数据执行统计测试,并将测试结果与水果名称一起存储在另一个文件中。

这是一种解决方案,使用字符串单元格数组:

fruits={'apple','pear'};
for i_fruit = 1:length(fruits)
  strcat(fruits{i_fruit},' tart')
end

这是一种解决方案,使用字符串的单元格数组:

fruits={'apple','pear'};
for i_fruit = 1:length(fruits)
  strcat(fruits{i_fruit},' tart')
end
使用
fruits=char('apple','pear')
可以创建一个由char组成的natrix。最接近字符串列表的是单元格数组

fruits = {'apple','pear'}
打开csv应该类似于:

for f = fruits
  csvread([f{:},'tart.csv'])
end

不确定T之前是否需要空白,取决于您的文件名。

< P>用<代码>水果=char(‘苹果’,‘梨’)< /Cord> >创建字符的命名空间。最接近字符串列表的是单元格数组

fruits = {'apple','pear'}
打开csv应该类似于:

for f = fruits
  csvread([f{:},'tart.csv'])
end

不确定T之前是否需要空白,取决于您的文件名。

< P>这可以不用循环使用<代码> CyPoovis/COD> >如果<代码>水果>代码>是一个单元数组:

fruits = {'apple','pear'};
tarts = cellfun(@(x)strcat(x,' tart'),fruits,'UniformOutput',false)
然后可以使用
tarts{i}
访问字符串:

>> tarts{1}

ans =

apple tart

如果
fruits
是一个单元格数组,则可以使用
cellfun
在不使用循环的情况下执行此操作:

fruits = {'apple','pear'};
tarts = cellfun(@(x)strcat(x,' tart'),fruits,'UniformOutput',false)
然后可以使用
tarts{i}
访问字符串:

>> tarts{1}

ans =

apple tart

水果是尺寸为2x5的2D阵列。当你这样做的时候

for f=fruits'
您正在将水果转换为一维列数组,并在每个元素上循环。您应该在每一行上循环,如下所示:

fruits = char('apple','pear');
for ii=1:size(fruits,1)
   strcat(fruits(i,:),' tart')
end
这将产生:

ans =

apple tart


ans =

pear tart

水果是尺寸为2x5的2D阵列。当你这样做的时候

for f=fruits'
您正在将水果转换为一维列数组,并在每个元素上循环。您应该在每一行上循环,如下所示:

fruits = char('apple','pear');
for ii=1:size(fruits,1)
   strcat(fruits(i,:),' tart')
end
这将产生:

ans =

apple tart


ans =

pear tart

谢谢,但我想在每次循环迭代时加载一个csv文件。类似data=csvread(char(strcat('apple','tart','.csv'))的东西)谢谢,但我想在每次循环迭代中加载一个csv文件。类似于data=csvread(char(strcat('apple','tart','.csv'))的东西谢谢,循环可以工作。现在,我在每次迭代时打开一个csv文件时遇到一个问题,即f=fruits'data=csvread(char(strcat(char(f),'tart','.csv'));disp(char(f));disp(数据);结束;非常感谢你,丹尼尔!整洁,我不知道这是可能的!谢谢,这个循环有效。现在,我在每次迭代时打开一个csv文件时遇到一个问题,即f=fruits'data=csvread(char(strcat(char(f),'tart','.csv'));disp(char(f));disp(数据);结束;非常感谢你,丹尼尔!整洁,我不知道这是可能的!谢谢你,不过你使用的是一个索引
i_fruit
,我更喜欢直接在水果名称上循环,正如我在对@daniel答案的评论中所写的那样。他的答案是可行的,但我无法用它在循环中打开文件,所以我求助于你的索引解决方案。对于i_水果=1:长度(水果)数据=csvread(strcat(水果{i_水果},'tart','.csv');disp(数据);endDaniel更新了他的答案,现在我可以直接在变量名上循环,并可以使用它在循环中打开文件名。请参阅已接受的答案。谢谢,不过您使用的是索引
i_fruit
,我更喜欢直接在水果名称上循环,正如我在对@daniel的答案的评论中所写的那样。他的答案是可行的,但我无法用它在循环中打开文件,所以我求助于你的索引解决方案。对于i_水果=1:长度(水果)数据=csvread(strcat(水果{i_水果},'tart','.csv');disp(数据);endDaniel更新了他的答案,现在我可以直接在变量名上循环,并可以使用它在循环中打开文件名。见公认的答案。