本節書摘來自異步社群《matlab r2012a超級學習手冊》一書中的第2章,第2.4節,作者 史潔玉 , 孔玲軍,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視
matlab r2012a超級學習手冊
matlab能夠很好地支援字元串資料,可以用兩個不同的方式來表示字元串,即字元數組和字元串單元數組。
通常可以用m×n的字元數組來表示多個字元串,隻要這些字元串的長度是一樣。當需要儲存多個不同長度的字元串時,可以用單元類型來實作。
matlab提供了很多字元串操作,包括字元串的建立、合并、比較、查找以及與數值之間的轉換。下面介紹如何建立字元串的操作。
1.建立字元數組
可以用一對單引号來表示字元串,例如下面的示例代碼。
也可以用字元串合并函數strcat()來得到一個新的字元串,例如下面的示例代碼。
上述語句得到輸出代碼如下。
注意:
函數strcat()在合并字元串的同時會把字元串結尾的空格删除。要保留這些空格,可以用矩陣合并符[]來實作字元串合并,例如下面的示例代碼。
利用函數char()來建立字元串。該函數建立字元串數組時,如果字元串不具有相同的長度,則函數char()自動用空格把字元串補足到最長的字元串的長度。例如下面的示例代碼。
2.建立字元串單元數組
可以用函數cellstr()來建立字元串單元數組。例如,有一個字元數組如下。
下面語句的功能是把上述字元數組轉換成為字元串單元數組,示例代碼設定如下。
函數cellstr()已經把字元串尾部的空格截去。例如下列語句可以檢視celldata的第一個字元串長度。
可以用函數char()把一個字元串單元數組轉換成一個字元數組,示例代碼設定如下。
其第一個字元串的長度可以得到如下的代碼。
matlab裡包括以下幾種比較字元串和字元子串的方法。比較兩個字元串或者兩個字元串的子串是否相同。
比較兩個字元串中的單獨字元是否相同。
對字元串内的元素進行識别,判定每一個元素是字元還是空白符(包括空格、制表符tab和換行符)。
這些函數對字元數組和字元串數組都适用。
1.字元串比較函數
matlab提供的字元串比較函數如表2-18所示。

例如,有兩個字元串如下。
由于這兩個字元串不相同,故調用函數strsmp()的結果為0,語句如下。
這兩個字元串的前5個字元是相同的,故用函數strncmp()比較它們的前5個字元,會傳回1,代碼設定如下。
2.用關系運算符比較字元串
可以對字元數組運用matlab7.0的關系運算符,但是要求比較的字元數組具有相同的維數,或者是其中一個是标量。例如,以下代碼是用等号運算符(==)來判斷兩個字元串裡哪些字元是相同的。
提示:
也可以用其他關系運算符(>、>=、<、<=、==、!=)來比較兩個字元串。
matlab提供的一般字元串查找和替換函數如表2-19所示。
下面例子是實作字元串替換。
下面例子是用于實作字元串查找。
下面例子是用于獲得第一個分隔符之前的字元串。
matlab提供的把數值轉換為字元串的函數如表2-20所示。
matlab提供的把字元串轉換為數值的函數如表2-21所示。
例如,要在指令行中輸出一行字元串來顯示向量x的最小值,使用代碼如下。
其中,函數disp()是在指令行中顯示一個字元串。由上述語句得到的結果如下。