【问题标题】:Store strings in a loop into an array?将循环中的字符串存储到数组中?
【发布时间】:2014-09-02 04:43:25
【问题描述】:

我在 MATLAB 中工作,目前有这个代码:

for i =1:142674:loop_end
data = textread('Results.txt', '%s');
name = data{i};
end

但是,我希望将我选择的数据点的名称存储到一个数组中,其中第一个名称将是数组中的第一个字符串,依此类推。所以最后我有一个数组,其中包含从循环中收集的所有名称。

【问题讨论】:

标签: arrays matlab loops


【解决方案1】:

这个呢:

counter = 0
for i =1:142674:loop_end
    counter = counter + 1;
    data = textread('Results.txt', '%s');
    myArray{counter} = data{i};
end

myArray 将包含名称。

> myarray = 'Name1'  'Name2'  'Name3'  'Name4'

虽然它实际上是一个元胞数组,而不是常规数组

【讨论】:

  • 旁注:在您的代码中,因为迭代是逐步迭代(1:142674:loop_end),myArray 将包含许多空条目。
  • @CitizenInsane 你是对的,感谢您的注意。我通过添加一个计数器来修复它。
  • 行得通。然后我怎样才能在循环中调用数组来保存这样的: for i:array.length saveas(gcf, 'Name', 'jpeg') ;所以我每次都会将文件名保存为不同的名称,并为我创建的数组获取这些名称......但我想要
  • @user3145111 您可以使用myArray{InsertIndexNumberHere} 调用数组中的任何字符串。即:myArray{2} 将给出第二个名称。
  • 一直说,索引超出了矩阵维度。数组是 1x6,循环从 1:6...?
【解决方案2】:

为什么要多次读取文本文件?

data = textread('Results.txt', '%s');
names = data(1:142674:end);

这样names 是一个元胞数组,包含文件中的第 1 个、第 142675 个等...字符串。

注意:好吧,也许我误解了这个问题。

【讨论】:

  • 您的答案更快且更优化。我个人认为你的比我的好得多。 +1
  • 谢谢...问题解决了,这是最重要的;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2015-08-29
  • 2015-02-08
  • 2018-03-04
相关资源
最近更新 更多