通过从多个txt文件导入数据来创建多个类实例(相同的类)

时间:2011-09-15 22:02:27

标签: matlab

如果在某个地方得到回答,我希望我能原谅。我不知道所有的编程术语,我的搜索没有得到任何我可以使用的东西。

我的问题: 我有多个包含我想要使用的数据的txt文件。名称如下:

spectrum_day “数量” .TXT

我想做类似的事情:

天“数字”= classname(spectrum_day“数字”.txt)

不为每个文件手动执行此操作。我试着这样做,希望它会起作用。

f = dir('spectrum_day*.txt');
for i = 1:numel(f)
    f(i).name(1,10:length(f(i).name)-4 = day(f(i).name));
end

另外,我想知道是否可以通过拥有所有实例名称的数组并使用类似的东西来访问实例的属性: “一(1).wavelength”?或者,如果还有另一种方法可以从循环中的同一个类的多个实例中获取属性,或者其他方式,请随时填写。

由于

1 个答案:

答案 0 :(得分:3)

你的问题不是很清楚,但也许以下内容可能会让你走上正轨

首先从文件名中提取日期编号,您可以使用函数 regexp 。此函数使用正则表达式搜索特定模式的输入字符串(在您的情况下是文件名)。要搜索一个号码,您可以使用'\ d +' \ d 表示查找数字(0-9), + 表示查找序列中的一个或多个。将这些放在一起,您可以在 for-loop 中进行以下操作:

dayNumberString = regexp(f(i).name,'\d+','match'); %# Extract the digits of the day number into
                                                   %# a character array
dayNumber = str2num(dayNumberString);  %# Convert the character array to numeric data.

接下来,您需要一种从每个文件加载数据的方法(我假设问题中的代码片段中的函数 day 执行此操作并将数据作为matlab变量或类返回)。然后你可以简单地拥有

storedData(dayNumber).name = f(i).name; %#saves the file name.
storedData(dayNumber).data = day(f(i).name) %# read the file and save the result

加载数据后,您可以通过索引访问 storeData 结构中的数据。例如,要访问第10天的数据,您需要输入 storedData(10).data

... HTH