2011-02-19 89 views
0

txt文件如下。matlab導入文本格式

1  1  0  
    2  1  3  
     2  9  
     3 10  
    3  1  1  

當我使用importdata導入該文件,並得到如下格式;

1 1 0 
2 1 3 
2 9 NaN 
3 10 NaN 
3 1 1 

其實我要的是

1  1  0  
    2  1  3  
NaN  2  9  
NaN  3 10  
    3  1  1  

有沒有什麼簡便的方法?或者我應該在導入之前在每個數字之間做一個tab,讓matlab識別第一個元素是NaN?謝謝!

編輯

我測試,發現如果分隔符是tab和它的格式是正確的。我想知道是否有其他簡單的方法?謝謝。

回答

2

我認爲問題是importdata()不區分1或幾個空格,所以它假定行以第一個數字開始。製表符分隔的數據不存在此問題。如果您正在創建數據集,那麼最好使用類似製表符或逗號的方式來分隔數據。不過,您可以使用textscan()來吸引一些文本格式化魔術。

0

進口,這將是通過導入工具來做到這一點,作爲一個固定的寬度文件的最簡單方法:

uiimport(filename); 

您還可以生成從這裏碼(選擇導入選擇下拉菜單中,並生成腳本或功能)。

或者,您可以使用textscan閱讀:

fid = fopen(filename); 
d = textscan(fid, '%3s%3s%s%[^\n\r]', 'Delimiter', '', 'WhiteSpace', ''); 
fclose(fid); 

然後,你可以它製成數字數組,如果你想:

d2 = cell2mat(cellfun(@(x) str2double(x), d, 'UniformOutput', false));