2015-06-11 97 views
0

我非常感謝您的幫助!提前致謝! 我有以下格式巨大的文本文件:將文本文件的特定信息導入到矩陣中

********************************* 
timestep   455 
No_Specs    3 
H2     49 
H2O2     1 
O2     49 
********************************* 
timestep   460 
No_Specs    3 
H2O     49 
H2O2     1 
O2     49 
********************************* 
timestep   465 
No_Specs    2 
H2     50 
O2     50 
********************************* 

正如你所看到的文本文件包含了很多循環,每組4-10行(行的數目不恆定爲每個循環]。我想要的只是將時間步前面寫的數字報告給矩陣的第一列,另外,我需要找到'H2O'(爲了避免混淆,需要額外的空間),並且報告數字在該矩陣的第二列前面!顯然,如果循環中沒有任何「H2O」,則表示該行爲零的關聯數字!

這裏是代碼:

​​

問題與代碼是,第二列的元素都是零!我希望你能幫助我!我感謝你的幫助!最佳

回答

0

在這裏你去,有一些索引錯誤

%% 
fid=fopen('fic.txt'); 
l=fgetl(fid); 
k=1; 

while ischar(l)   
    r{k}=l; 
    k=k+1; 
    l=fgetl(fid); 
end 

fclose(fid); 
idx=find(~cellfun(@isempty,regexp(r,'(?=timestep).+'))); 
a=regexp(r(idx),'\d+','match'); 
b=str2double([a{:}]); 
ii=diff([idx numel(r)+1])-1; 

for k=1:numel(b);   
    s=r(idx(k)+1:idx(k)+ii(k)); 
    jj=find(~cellfun(@isempty,regexp(s,'(?=H2O).+'))); 
    c=regexp(s(jj),'\d+','match'); 

    if isempty(c) 
     f(k)=0; 
    else 
     f(k)=str2double(c{1}(2)); 
    end 
end 

M=[b' f'] 
+0

謝謝你幫了我一個大忙 –