2015-10-16 18 views
0

我需要將空格和列表分隔數據導入到矩陣樣式變量或結構,但文件會改變其格式,不允許我選擇%f%s預格式化函數作爲一個辦法。新列將被添加到文件或從文件中移除到另一個文件夾,我甚至不知道它們的類型。使用多個分隔符導入數據用於通用文件

如果我將其作爲文本文件打開並且與其分隔符同時選擇空格和製表符,Excel將顯示與我的數據完美匹配的數據。

如果您知道是否有任何文件的導入功能可以讓我遵循Excel的練習或對如何解決問題有任何想法,請說說!

中使用的文本的示例性部分被發現,下面:

loggername date__________ time________ s1a[m/s] s1x[m/s] s1i[m/s] s1s[m/s] s2a[m/s] s2x[m/s] s2i[m/s] s2s[m/s] s3a[m/s] s3x[m/s] s3i[m/s] s3s[m/s] d1a[°] d1s[°] d2a[°] d2s[°] h1a[%] t1a[°C] b1a[hPa] s4a[m/s] s4x[m/s] s4i[m/s] s4s[m/s] vxa[V] bla[V] bra[V] [-1=error] [ser.no.] 

TA-48 01/10/2015 00:00:00 5,8 7,1 4,9 0,4 5,7 7,3 4,8 0,4 4,9 5,8 4,1 0,3 161,0 7,0 167,0 8,0 81,0 24,65 1000,0 4,0 4,7 3,3 0,3 12,7 8,0 8,7  C120104 

TA-48 01/10/2015 00:10:00 5,8 6,5 5,3 0,2 5,8 6,5 5,1 0,2 5,1 5,6 4,3 0,3 164,0 7,0 171,0 9,0 81,0 24,65 1000,0 4,1 4,8 3,4 0,3 12,7 8,0 8,7  C120104 

TA-48 01/10/2015 00:20:00 5,7 6,2 5,2 0,2 5,6 6,2 4,9 0,2 4,6 5,2 3,7 0,3 162,0 7,0 169,0 9,0 82,0 24,55 999,0 3,6 4,3 3,0 0,3 12,7 8,0 8,7  C120104 

這裏,第一行表示的標題和變量的單位,被隨後其在相鄰的線的值。例如,s5a,s5x,s5i,s5s可以是另一個文本文件中的新變量。

謝謝!

回答

1

由於唯一的空格分隔變量是日期和時間,我決定在導入整個製表符分隔文件後將它們分開。

爲此,我使用了tdfread功能,該功能將每列作爲結構項返回,並使用簡單的strfind將它們分開。

1

dlmread功能,無需任何選項將把兩個空格和製表符分隔符(至少在R2014a):

mydata = dlmread('myfile.txt');

不過,這僅適用於數字數據的工作,它看起來像你的文件也有人物。相反,您可以使用fgetl從文件中獲取一行,然後使用strcmp檢查空格或製表符。像這樣一個循環中:

line = fgetl(fid); 
for k = 1:(length(line)-3); 
    if strcmp(line(k:(k+3)),' '); 
     % there's a tab here! 
    end 
end 
for k = 1:length(line); 
    if strcmp(line(k),' '); 
     % there's a space here! 
    end 
end 

注意,這裏假設標籤是4位。

+0

這對我來說很有效,Brian! 但我決定使用另一種方法。 –

+0

很酷,感謝發佈,我將在未來嘗試使用'tdfread'和'strfind'。 –

相關問題