2012-01-11 94 views
0

我有一個文件有很多數據點,所有的格式都像XX.XXX這些數字連續串在一起。Matlab文件閱讀

如何將所有數字分隔爲單個值?

我試着從'%5.3d'和'%5.3f'的文件讀取,但他們都沒有工作。同樣,'%6s'也不起作用。

示例輸入:

75.91425.43937.55492.55874.43839.51519.59935.11762.33178.14914.81569.43037.90083.32590.492 
70.45060.24634.07148.20638.34348.88881.90070.37655.06531.76382.54791.43659.88274.56288.827 
87.28590.39641.39551.67340.39870.613 

所需的輸出:

75.914 
25.439 
37.554 
92.558 
etc. 

我曾嘗試:

fscanf(Fid,'%6.3f',[3 inf]); 
fscanf(Fid,'%5.3f',[3 inf]); 
fscanf(Fid,'%5.3f',[3 inf]); 
fscanf(Fid,['%2d' char('.') '%3d'], [6 inf]); 
+0

是'%6.3F的工作? – milancurcic 2012-01-11 22:32:09

+0

編號從fscanf返回的矩陣是'' – 2012-01-11 22:35:25

+1

我會建議編輯您的問題與數據示例,您用於閱讀的代碼示例,正是您期望得到,以及您當前正在獲取什麼。我與Matlab不太好,但擴展問題會有所幫助。 – milancurcic 2012-01-11 22:41:26

回答

2

假設每一個元素是6個字符,你可以執行以下操作以來的fscanf ISN」不工作。注意:我將你的樣品保存到「numData.txt」中。

編輯:這樣好多了。

fid = fopen('numData.txt','r'); 
numArray = textscan(fid,'%6.3f',inf); 

numArray = 

    75.9140 
    25.4390 
    37.5540 
    ... etc 
+0

這對我也不起作用。我很困惑,爲什麼會有任何問題。所有的語法看起來都正確。 – 2012-01-12 00:19:20

+0

@NathanTornquist我不知道爲什麼這不起作用。我只是將您的示例粘貼到文本文件中,沒有問題。也許你的數據文件中有些東西不符合你的例子。當你嘗試上面的代碼時,你會得到錯誤還是隻是空的結果數組?此外,我會檢查您的數據文件,看看是否有任何換行符,空格等,這打破了模式。 – 2012-01-12 01:15:22