MATLAB Function Reference |
Syntax
A
=
sscanf(s,format)
A
=
sscanf(s,format,size)
[A,count,errmsg,nextindex]
=
sscanf(...)
Description
A = sscanf(s,format)
從MATLAB 字串變數s
,讀入資料,並且依照給定的format
字串轉換,並將結果傳回到陣列A
。format
是一個字串給定了資料被讀取的格式。請參考 "Remarks" 獲得更多細節。 sscanf
和fscanf
是一樣的,除了本函數是從MATLAB字串變數讀取資料,而不是從檔案。
A = sscanf(s,format,size)
讀入size
參數所給定的資料量並將讀入的資料依照給定的字串format
做轉換。size
是一個參數,用來定義多少資料將被讀取。合法的選項有
n
讀取
n
個元素到行向量之中。inf
讀到檔案結束才停止,並將結果放到一個和檔案內容有一樣多〔元素數量〕的行向量當中。
[m,n]
讀取足夠的元素去填滿一個
m
-乘-n
的矩陣,以行的順序填入(以行為單位)。n
可以是Inf
,但是m
不行。
如果一個矩陣A
只使用轉換字元得到,同時size
不是以[M,N]
的格式給定,則將會以一個列向量的型式傳回。
sscanf
和他C語言的同名函數scanf()
以及fscanf()
在某些重要方面是不同的。本函數已被向量化(vectorized),也才能夠傳回矩陣型態的參數。字串format
將會被本函數循環使用,直到整個檔案都被讀盡,或著是size
所設定要讀取的資料量已滿(到)。
從MATLAB的字串變數[
A,count,errmsg,nextindex] = sscanf(...)
s
讀取資料,並且根據給定的字串format
去轉換資料,同時將資料轉換的結果傳回到矩陣A。count
是一個選擇性的輸出參數,這個參數主要是傳回函數成功讀取的元素個數有多少。errmsg
也是一個選擇性的輸出參數,當錯誤發生,或是遇到沒有錯誤發生的空(empty)陣列時,這個參處傳回錯誤訊息字串。nextindex
也是一個選擇性輸出的參數,給定了字串s
中最後一個被掃描讀取走的位置的下一個的位置。
Remarks
當MATLAB讀取一個給定的檔案,MATLAB會企圖比對檔案中的資料和格式字串。如果比對成功,資料會以行順序的方式被寫到矩陣。如果只有部分比對成功,則只有比對成功的部分會被寫入到矩陣,同時讀入的動作也會停止。
format
字串包含了平常的字元,也包含了轉換的說明。轉換說明指出了將會被進行比對的資料其所屬形式,同時包含了字元%
, 欄位寬度和轉換的字元,我們將之整理呈現如下:
星號 (* ) |
如果該值被比對成功,將不會被存入輸出的矩陣,會被省略。 |
數字字串 |
最大欄位值。 |
一個英文字母 |
收到物件的大小;舉例來說,h 是短尺寸,在%hd 表示短整數,或是l 是長尺寸,在%ld 表示長整數,或是%lg 指定倍精準度浮點數。 |
%c |
一序列的字元:欄位寬度(Field Width)給定了字數。 |
%d |
十進位數字 |
|
浮點數 |
%i |
有正負號的整數。 |
%o |
有正負號的八進為整數。 |
|
一串無白空白(non-whitespace)的字元。 |
%u |
有正負號的十進為整數。 |
%x |
有正負號的十六進位整數 |
[...] |
一序列的字元 (scanlist) |
如果使用%s
, 則讀取元素的動作將會使用到許多MATLAB矩陣元素,因為每一個元素只存放一個字元(補充:是一個元素只放一個字元,不是一串字串。)。使用%c
去讀取空白字元,或是使用%s
去忽略所有的白空白(white space)。
將字元和數字混合的轉換說明將造成矩陣成為數字型態的矩陣,同時MATLAB以一個矩陣元素存放一個字元的形式來存放資料,而任何字元將會以其ASCII值來顯示。
如果想要獲得更多有關於格式化字串的資料,請參考scanf()
函數和fscanf()
函數在C語言參考手冊中的使用方法。
Examples
s = '2.7183 3.1416'; A = sscanf(s,'%f')
See Also
squeeze | stairs |