2011-02-04 82 views
0

我試圖解析的數據包括:爲什麼Maple在閱讀逗號/空格分隔值時出現故障,以及如何解決它?

29 28 23 19 14 11 13 17 
36 26 21 21 13 8 7 6 
54 33 25 26 18 13 10 3 
70 45 29 26 20 19 16 6 
85 63 41 27 22 23 20 13 
94 82 58 36 27 25 20 18 
93 91 76 53 36 26 21 18 
94 96 90 71 47 32 26 26 

1.60721 -0.529301 6.88206 5.14482 

27 30 32 34 37 40 39 36 
6 8 10 10 12 13 14 13 
2 1 2 3 4 5 7 10 
3 1 2 3 5 6 7 12 
5 1 1 3 4 4 7 10 
11 6 3 3 5 6 8 10 
12 9 4 3 5 8 11 14 
16 14 11 10 13 18 24 28 

0.709391 6.50125 0.745197 0.4955 

39 38 37 39 40 40 40 40 
20 21 21 22 23 23 24 24 
14 16 17 17 16 17 18 18 
12 12 13 12 12 13 13 14 
12 12 12 12 12 12 11 10 
13 11 11 13 14 14 13 13 
17 16 17 20 22 21 21 22 
34 33 34 39 40 38 40 44 

6.36007 0.492539 6.03537 6.58187 

採用的算法,如:

restart: 
Z:="C://TEMP//mydata.txt": 

fclose(Z); 

#M:=Array(1..100): 
#V:=Array(1..100): 

for i from 1 to 100 do 
    try 
     M[i]:=fscanf(Z,"%{8,8}ldm")[1]; 
     V[i]:=fscanf(Z,"%{4}ldr")[1]; 
    catch "end of input encountered": 
     break; 
    end try; 
end do; 

M[2]; # returns the 2nd entry (a 8x8 Matrix) of M 
V[2]; # returns the 2nd entry (a 1x4 row Vector) of V 

但它失敗,錯誤,(在的fscanf),而讀矢量

無效字符 .遇到

我該如何解決這樣的錯誤?

回答

1

在的代碼行,

V[i]:=fscanf(Z,"%{4}ldr")[1]; 

格式修飾語 「LDR」 是指LD(長整型)值進入一個行(r)的向量。你得到一個錯誤,因爲數據包含浮點數,並且該代碼是專門針對整數的。 (您之前關於此主題的帖子中包含所有整數值數據。)

如果您現在有一個帶有浮點數的文本文件,那麼您可以將用於處理矢量數據的代碼行更改爲任何這些數據,

V[i]:=fscanf(Z,"%{4}fr")[1]; 

V[i]:=fscanf(Z,"%{4}er")[1]; 

V[i]:=fscanf(Z,"%{4}gr")[1]; 

自%克,%e和%f是scanf的浮點格式修飾符。

如果你不知道什麼樣的項目都在該文件中,你也可以嘗試,

V[i]:=fscanf(Z,"%{4}ar")[1]; 

因爲在楓葉的scanf函數的%描述符的意思是「代數」(包括整數和浮點數,其他類型)。

請參閱幫助頁?scanf函數楓樹自己的幫助系統或在網上,

scanf

宏基