2012-03-26 27 views
0
1    IE    4.3310   11089 
2    NI    2.8207   7222 
3    RZ    1.7162   4394 
4    WI    1.5857   4060 
5    NA    1.5510   3971 
6    PO    1.5080   3861 
7    ZE    1.4354   3675 
8    CH    1.4150   3623 
9    CZ    1.3936   3568 

我有類似的東西。我寫這個的fscanf的格式:如何在matlab中將格式寫入fscanf可以正確讀取?

fscanf(file_id, "%d %s %f %d") 

而且例如 - 第一行 - 我想:

[1, 'IE', 4.3310, 110890] 

我得到這個:

[1.00, 49.0, 45.0, 4.3310, 110890] 

它轉換字符爲整數,後浮,但你能告訴我如何避免這種情況嗎? 如果可能。

回答

3

FSCANF只返回數字(或字符)數組。我建議使用TEXTSCAN作爲混合數據。

fid = fopen(filename, 'rt'); 
A = textscan(fid, '%d %s %f %d', 'delimiter','\t'); 
fclose(fid); 

A將是一個單元陣列。

0

改爲使用textscan。 E.G .:

fid = fopen('testfile.dat'); 
result = textscan(fid,'%d %s %f %d'); 
fclose(fid) 

現在result是適當數據類型的列的單元數組。例如:

>> result 
result = 
    [9x1 int32] {9x1 cell} [9x1 double] [9x1 int32] 
>> result{1} 
ans = 
      1 
      2 
      3 
      4 
      5 
      6 
      7 
      8 
      9 
>> result{2} 
ans = 
    'IE' 
    'NI' 
    'RZ' 
    'WI' 
    'NA' 
    'PO' 
    'ZE' 
    'CH' 
    'CZ' 
相關問題