2014-02-26 38 views
1

我有問題得到我想要從sscanf;問題與sscanf

例如從文件名獲得varname,year,month,day;

filename = 'stn2014021412598cjgafe.cnv' 

format = '%3s%4d%2d%2d%5d%*10s'; 
test = sscanf(filename,format); 

和我得到的結果是:

test = 

    115 
    116 
    110 
    2014 
     2 
     14 
    12598 

,但我想要的是

varname = 'stn' 
year = 2014 
month = 2 
day = 14 

,然後記錄或沒有5個位數

num = 12598 

,並跳過一切。

但是,我有我爲什麼得到這些3個數字115,116,110

+0

你得到你正在尋找的答案? – chappjc

回答

3

最初的這三個值是's''t''n'字符代碼不理解。 sscanf documentation解釋了爲什麼它以這種方式出現在format說明符中。

混合字符和數字轉換規範使 所得矩陣是數字和任何字符讀顯示出來 作爲其數值,每MATLAB矩陣元素的一個字符。

換句話說:

>> char(test(1:3))' 
ans = 
stn 

一個簡單的解決方案可能是textscan因爲它存儲的組件單元陣列,允許不同的類型:

>> C = textscan(filename,format) 
C = 
    {1x1 cell} [2014] [2] [14] [12598] 
>> C{1} 
ans = 
    'stn' 
+0

優秀!!非常感謝!這對我來說更有意義了! – user3353703