- Matlab 教程
- MATLAB - 首頁
- MATLAB - 概述
- MATLAB - 特性
- MATLAB - 環境設定
- MATLAB - 編輯器
- MATLAB - 線上
- MATLAB - 工作區
- MATLAB - 語法
- MATLAB - 變數
- MATLAB - 命令
- MATLAB - 資料型別
- MATLAB - 運算子
- MATLAB - 日期和時間
- MATLAB - 數字
- MATLAB - 隨機數
- MATLAB - 字串和字元
- MATLAB - 文字格式化
- MATLAB - 時間表
- MATLAB - M 檔案
- MATLAB - 冒號表示法
- MATLAB - 資料匯入
- MATLAB - 資料輸出
- MATLAB - 資料歸一化
- MATLAB - 預定義變數
- MATLAB - 決策
- MATLAB - 決策
- MATLAB - If End 語句
- MATLAB - If Else 語句
- MATLAB - If…Elseif Else 語句
- MATLAB - 巢狀 If 語句
- MATLAB - Switch 語句
- MATLAB - 巢狀 Switch
- MATLAB - 迴圈
- MATLAB - 迴圈
- MATLAB - For 迴圈
- MATLAB - While 迴圈
- MATLAB - 巢狀迴圈
- MATLAB - Break 語句
- MATLAB - Continue 語句
- MATLAB - End 語句
- MATLAB - 陣列
- MATLAB - 陣列
- MATLAB - 向量
- MATLAB - 轉置運算子
- MATLAB - 陣列索引
- MATLAB - 多維陣列
- MATLAB - 相容陣列
- MATLAB - 分類陣列
- MATLAB - 元胞陣列
- MATLAB - 矩陣
- MATLAB - 稀疏矩陣
- MATLAB - 表格
- MATLAB - 結構體
- MATLAB - 陣列乘法
- MATLAB - 陣列除法
- MATLAB - 陣列函式
- MATLAB - 函式
- MATLAB - 函式
- MATLAB - 函式引數
- MATLAB - 匿名函式
- MATLAB - 巢狀函式
- MATLAB - 返回語句
- MATLAB - 空函式
- MATLAB - 區域性函式
- MATLAB - 全域性變數
- MATLAB - 函式控制代碼
- MATLAB - 濾波器函式
- MATLAB - 階乘
- MATLAB - 私有函式
- MATLAB - 子函式
- MATLAB - 遞迴函式
- MATLAB - 函式優先順序順序
- MATLAB - 對映函式
- MATLAB - 平均值函式
- MATLAB - 結束函式
- MATLAB - 錯誤處理
- MATLAB - 錯誤處理
- MATLAB - Try...Catch 語句
- MATLAB - 除錯
- MATLAB - 繪圖
- MATLAB - 繪圖
- MATLAB - 繪製陣列
- MATLAB - 繪製向量
- MATLAB - 條形圖
- MATLAB - 直方圖
- MATLAB - 圖形
- MATLAB - 二維線圖
- MATLAB - 三維圖
- MATLAB - 格式化圖形
- MATLAB - 對數座標軸圖
- MATLAB - 繪製誤差條
- MATLAB - 繪製三維等值線
- MATLAB - 極座標圖
- MATLAB - 散點圖
- MATLAB - 繪製表示式或函式
- MATLAB - 繪製矩形
- MATLAB - 繪製頻譜圖
- MATLAB - 繪製網格曲面
- MATLAB - 繪製正弦波
- MATLAB - 插值
- MATLAB - 插值
- MATLAB - 線性插值
- MATLAB - 二維陣列插值
- MATLAB - 三維陣列插值
- MATLAB - 多項式
- MATLAB - 多項式
- MATLAB - 多項式加法
- MATLAB - 多項式乘法
- MATLAB - 多項式除法
- MATLAB - 多項式的導數
- MATLAB - 變換
- MATLAB - 變換
- MATLAB - 拉普拉斯變換
- MATLAB - 拉普拉斯濾波器
- MATLAB - 高斯-拉普拉斯濾波器
- MATLAB - 逆傅立葉變換
- MATLAB - 傅立葉變換
- MATLAB - 快速傅立葉變換
- MATLAB - 二維逆餘弦變換
- MATLAB - 在座標軸上新增圖例
- MATLAB - 面向物件
- MATLAB - 面向物件程式設計
- MATLAB - 類和物件
- MATLAB - 函式過載
- MATLAB - 運算子過載
- MATLAB - 使用者定義類
- MATLAB - 複製物件
- MATLAB - 代數
- MATLAB - 線性代數
- MATLAB - 高斯消去法
- MATLAB - 高斯-約旦消去法
- MATLAB - 簡化行階梯形式
- MATLAB - 特徵值和特徵向量
- MATLAB - 積分
- MATLAB - 積分
- MATLAB - 二重積分
- MATLAB - 梯形法則
- MATLAB - 辛普森法則
- MATLAB - 其他
- MATLAB - 微積分
- MATLAB - 微分
- MATLAB - 矩陣的逆
- MATLAB - GNU Octave
- MATLAB - Simulink
- MATLAB - 有用資源
- MATLAB - 快速指南
- MATLAB - 有用資源
- MATLAB - 討論
MATLAB - 字串
在 MATLAB 中建立字元字串非常簡單。事實上,我們已經多次使用過它。例如,您在命令提示符中鍵入以下內容:
my_string = 'Tutorials Point'
MATLAB 將執行上述語句並返回以下結果:
my_string = Tutorials Point
MATLAB 將所有變數視為陣列,字串被視為字元陣列。讓我們使用 whos 命令來檢查上面建立的變數:
whos
MATLAB 將執行上述語句並返回以下結果:
Name Size Bytes Class Attributes my_string 1x16 32 char
有趣的是,您可以使用諸如 uint8 或 uint16 之類的數值轉換函式將字串中的字元轉換為其數值程式碼。char 函式將整數向量轉換回字元:
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中:
my_string = 'Tutorial''s Point'; str_ascii = uint8(my_string) % 8-bit ascii values str_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16-bit ascii values str_back_to_char = char(str_16bit)
執行該檔案時,它將顯示以下結果:
str_ascii = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point str_16bit = 84 117 116 111 114 105 97 108 39 115 32 80 111 105 110 116 str_back_to_char = Tutorial's Point
矩形字元陣列
到目前為止,我們討論的字串是一維字元陣列;但是,我們需要儲存更多內容。我們需要在程式中儲存更多維的文字資料。這是透過建立矩形字元陣列來實現的。
建立矩形字元陣列的最簡單方法是垂直或水平地連線兩個或多個一維字元陣列,具體取決於需要。
您可以透過以下任一方式垂直組合字串:
使用 MATLAB 連線運算子 [] 並用分號 (;) 分隔每一行。請注意,在此方法中,每一行必須包含相同數量的字元。對於長度不同的字串,您應根據需要用空格字元填充。
使用 char 函式。如果字串的長度不同,char 會用尾隨空格填充較短的字串,以便每一行具有相同數量的字元。
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中:
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
執行該檔案時,它將顯示以下結果:
doc_profile = Zara Ali Sr. Surgeon R N Tagore Cardiology Research Center doc_profile = Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
您可以透過以下任一方式水平組合字串:
使用 MATLAB 連線運算子 [] 並用逗號或空格分隔輸入字串。此方法保留輸入陣列中的任何尾隨空格。
使用字串連線函式 strcat。此方法刪除輸入中的尾隨空格。
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中:
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = [name ', ' position ', ' worksAt] profile = strcat(name, ', ', position, ', ', worksAt)
執行該檔案時,它將顯示以下結果:
profile = Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center profile = Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
將字串組合到元胞陣列中
從我們之前的討論中可以清楚地看出,組合長度不同的字串可能很麻煩,因為陣列中的所有字串都必須具有相同的長度。我們已在字串末尾使用空格來使它們的長度相等。
但是,將字串組合的更有效方法是將結果陣列轉換為元胞陣列。
MATLAB 元胞陣列可以在陣列中儲存不同大小和型別的資料。元胞陣列提供了一種更靈活的方式來儲存不同長度的字串。
cellstr 函式將字元陣列轉換為字串的元胞陣列。
示例
建立一個指令碼檔案,並將以下程式碼鍵入其中:
name = 'Zara Ali '; position = 'Sr. Surgeon '; worksAt = 'R N Tagore Cardiology Research Center'; profile = char(name, position, worksAt); profile = cellstr(profile); disp(profile)
執行該檔案時,它將顯示以下結果:
{
[1,1] = Zara Ali
[2,1] = Sr. Surgeon
[3,1] = R N Tagore Cardiology Research Center
}
MATLAB 中的字串函式
MATLAB 提供了許多字串函式來建立、組合、解析、比較和操作字串。
下表提供了 MATLAB 中字串函式的簡要說明:
| 函式 | 用途 |
|---|---|
| 用於將文字儲存在字元陣列中、組合字元陣列等的功能。 | |
| blanks | 建立空格字元字串 |
| cellstr | 從字元陣列建立字串的元胞陣列 |
| char | 轉換為字元陣列(字串) |
| iscellstr | 確定輸入是否為字串的元胞陣列 |
| ischar | 確定專案是否為字元陣列 |
| sprintf | 將資料格式化為字串 |
| strcat | 水平連線字串 |
| strjoin | 將元胞陣列中的字串連線成單個字串 |
| 用於識別字符串部分、查詢和替換子字串的功能 | |
| ischar | 確定專案是否為字元陣列 |
| isletter | 字母字元的陣列元素 |
| isspace | 空格字元的陣列元素 |
| isstrprop | 確定字串是否屬於指定的類別 |
| sscanf | 從字串讀取格式化資料 |
| strfind | 在一個字串中查詢另一個字串 |
| strrep | 查詢和替換子字串 |
| strsplit | 在指定分隔符處分割字串 |
| strtok | 字串的選定部分 |
| validatestring | 檢查文字字串的有效性 |
| symvar | 確定表示式中的符號變數 |
| regexp | 匹配正則表示式(區分大小寫) |
| regexpi | 匹配正則表示式(不區分大小寫) |
| regexprep | 使用正則表示式替換字串 |
| regexptranslate | 將字串轉換為正則表示式 |
| 用於字串比較的功能 | |
| strcmp | 比較字串(區分大小寫) |
| strcmpi | 比較字串(不區分大小寫) |
| strncmp | 比較字串的前 n 個字元(區分大小寫) |
| strncmpi | 比較字串的前 n 個字元(不區分大小寫) |
| 用於將字串更改為大寫或小寫、建立或刪除空格的功能 | |
| deblank | 從字串末尾去除尾隨空格 |
| strtrim | 去除字串開頭和結尾的空格 |
| lower | 將字串轉換為小寫 |
| upper | 將字串轉換為大寫 |
| strjust | 對齊字元陣列 |
示例
以下示例說明了一些上述字串函式:
格式化字串
建立一個指令碼檔案,並將以下程式碼鍵入其中:
A = pi*1000*ones(1,5);
sprintf(' %f \n %.2f \n %+.2f \n %12.2f \n %012.2f \n', A)
執行該檔案時,它將顯示以下結果:
ans = 3141.592654
3141.59
+3141.59
3141.59
000003141.59
連線字串
建立一個指令碼檔案,並將以下程式碼鍵入其中:
%cell array of strings
str_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single string
str1 = strjoin(str_array, "-")
str2 = strjoin(str_array, ",")
執行該檔案時,它將顯示以下結果:
str1 = red-blue-green-yellow-orange str2 = red,blue,green,yellow,orange
查詢和替換字串
建立一個指令碼檔案,並將以下程式碼鍵入其中:
students = {'Zara Ali', 'Neha Bhatnagar', ...
'Monica Malik', 'Madhu Gautam', ...
'Madhu Sharma', 'Bhawna Sharma',...
'Nuha Ali', 'Reva Dutta', ...
'Sunaina Ali', 'Sofia Kabir'};
% The strrep function searches and replaces sub-string.
new_student = strrep(students(8), 'Reva', 'Poulomi')
% Display first names
first_names = strtok(students)
執行該檔案時,它將顯示以下結果:
new_student =
{
[1,1] = Poulomi Dutta
}
first_names =
{
[1,1] = Zara
[1,2] = Neha
[1,3] = Monica
[1,4] = Madhu
[1,5] = Madhu
[1,6] = Bhawna
[1,7] = Nuha
[1,8] = Reva
[1,9] = Sunaina
[1,10] = Sofia
}
比較字串
建立一個指令碼檔案,並將以下程式碼鍵入其中:
str1 = 'This is test'
str2 = 'This is text'
if (strcmp(str1, str2))
sprintf('%s and %s are equal', str1, str2)
else
sprintf('%s and %s are not equal', str1, str2)
end
執行該檔案時,它將顯示以下結果:
str1 = This is test str2 = This is text ans = This is test and This is text are not equal