2014-10-18 93 views
0

我有一个简单的脚本来从某些基本文件名(YYYYMMDD)和一个头文件导入一些光谱数据。我现在的方法把实际的光谱强度推到某个向量'rawspectra'上,我可以用'rawspectra {m,n} .data(q,r)来调用数据。在脚本中,我手工指定基文件名并将其另存为字符串'文件库'。(matlab)字符串的唯一变量名称

我想将rawspectra向量的名称附加到文件库中,这样我可以使用该脚本将不同日期获取的文件导入到同一个工作空间中,而不会覆盖rawspectra向量(还可以轻松理解其中的载体连接到实验条件,我可以通过手动重命名矢量很容易地做到这一点,但我宁愿让这个自动

我输入脚本如下:。

%for the importation of multiple sequential files, starting at startfile 
%and ending at numfiles. All raw scans are subsequently plotted. 

numfiles = input('How many spectra?'); 
startfile = input('What is the starting file number?'); 
numberspectra = numfiles - (startfile - 1); 
filebase = strcat(num2str(input('what is the base file number?')),'_'); 
rawspectra = cell(startfile, numberspectra); 



for k= startfile:numberspectra 
filename = strcat(filebase,sprintf('%.3d.txt', k)); 
%eval(strcat(filebase,'rawspectra')){k} = importdata(filename); - This does not work. 
rawspectra{k} = importdata(filename); 
figure; 
plot(rawspectra{1,k}.data(:,1),rawspectra{1,k}.data(:,2)) 
end 

如果你们可以帮助我完成一个看起来很简单的任务,我会很努力欣赏。基本上,我希望'filebase'在'rawspectra'前面,然后在循环内用k ++递增。

谢谢!

回答

0

为什么不

rawspectra(k) = importdata(filename); 
rawspectra(k).filebase = filebase; 
+0

谢谢大家的响应。虽然这允许我使用基本文件名来标记数据集,但是当我导入具有不同基本文件名的数据集时,它仍然会覆盖'rawspectra'变量。这不符合我的需要,但你确实教给我更多关于matlab的内容,所以非常感谢。 – user8307 2014-10-21 19:48:38

+0

@ user8307:不客气。我对你的回答有点困惑,但可能我没有把你的问题给对。无论如何,通用方法是创建一个(结构)数组,它可以将数据向量和文件名保存为其元素,并使用数组索引访问它们。 – Kostya 2014-10-21 21:08:43