本節(jié)我們學(xué)習(xí)如何在MATLAB中創(chuàng)建一個字符串。
例如:
my_string = 'w3cschool''在線教程'
MATLAB執(zhí)行上述語句,返回以下結(jié)果:
my_string =
w3cschool在線教程
MATLAB 認(rèn)為所有變量,數(shù)組和字符串被視為字符數(shù)組。
讓我們使用命令檢查上面創(chuàng)建的變量:
whos
MATLAB執(zhí)行上面的語句,返回以下結(jié)果:
Name Size Bytes Class Attributes
my_string 1x16 32 char
你可以使用數(shù)字轉(zhuǎn)換函數(shù),如 uint8 或 uint16 字符串中的字符轉(zhuǎn)換成數(shù)字代碼。
char 函數(shù)整數(shù)向量轉(zhuǎn)換回字符:
在MATLAB中建立一個腳本文件,輸入下述代碼:
my_string = 'w3cschool''在線教程';
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)
運行該文件,顯示以下結(jié)果:
str_ascii =
Columns 1 through 14
84 117 116 111 114 105 97 108 39 115 32 80 111 105
Columns 15 through 16
110 116
str_back_to_char =
w3cschool在線教程
str_16bit =
Columns 1 through 10
84 117 116 111 114 105 97 108 39 115
Columns 11 through 16
32 80 111 105 110 116
str_back_to_char =
w3cschool在線教程
目前為止我們已經(jīng)討論過的字符串的字符數(shù)組是一維,但是我們需要更立體的文本數(shù)據(jù)存儲在我們的程序中。這是通過創(chuàng)建的矩形的字符數(shù)組。
建立一個矩形字符數(shù)組的最簡單的方法是通過連接兩個或兩個以上的一維字符數(shù)組,無論是垂直或水平的要求。
您可以通過以下方式之一合并垂直字符串:
使用 MATLAB 連接運算符 [] 和分離每行一個分號(;)。請注意,在該方法中的每一行必須包含相同的字符數(shù)。不同長度的字符串,應(yīng)該根據(jù)需要使用空格字符。
使用 char 函數(shù)。如果字符串長度不同和 char 補齊較短尾隨空白,使每一行都有相同數(shù)量的字符的字符串。
在MATLAB中建立一個腳本文件,輸入下述代碼:
doc_profile = ['Zara Ali '; ...
'Sr. Surgeon '; ...
'R N Tagore Cardiology Research Center']
doc_profile = char('Zara Ali', 'Sr. Surgeon', ...
'RN Tagore Cardiology Research Center')
運行該文件,顯示以下結(jié)果:
doc_profile =
Zara Ali
Sr. Surgeon
R N Tagore Cardiology Research Center
doc_profile =
Zara Ali
Sr. Surgeon
RN Tagore Cardiology Research Center
采取下述方式之一橫向合并字符串:
使用MATLAB串連運算,[],并用逗號或空格分隔輸入字符串。這種方法保留任何尾隨空格輸入數(shù)組。
使用字符串連接函數(shù) strcat。此方法刪除尾隨空格輸入
在MATLAB中建立一個腳本文件,并輸入下述代碼:
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = [name ', ' position ', ' worksAt]
profile = strcat(name, ', ', position, ', ', worksAt)
運行該文件,顯示以下結(jié)果:
profile =
Zara Ali , Sr. Surgeon , R N Tagore Cardiology Research Center
profile =
Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
從前面的學(xué)習(xí)中,很明顯,組合不同長度的字符串可能會很痛苦,因為數(shù)組中的所有字符串都必須具有相同的長度。在字符串的末尾使用了空格,使其長度相等。
然而,組合字符串的更有效的方法是將生成的數(shù)組轉(zhuǎn)換為單元格數(shù)組。
MATLAB單元格數(shù)組可以在數(shù)組中保存不同大小和類型的數(shù)據(jù)。單元格數(shù)組提供了一種更靈活的方法來存儲不同長度的字符串。
?cellstr
?函數(shù)將字符數(shù)組轉(zhuǎn)換為字符串的單元格數(shù)組。
在MATLAB中建立一個腳本文件,輸入下述代碼:
name = 'Zara Ali ';
position = 'Sr. Surgeon ';
worksAt = 'R N Tagore Cardiology Research Center';
profile = char(name, position, worksAt);
profile = cellstr(profile);
disp(profile)
運行該文件,顯示以下結(jié)果:
'Zara Ali'
'Sr. Surgeon'
'R N Tagore Cardiology Research Center'
MATLAB 提供了許多創(chuàng)建、組合、分析、比較和處理字符串的字符串函數(shù)。
下表是對 MATLAB 中字符串函數(shù)的簡要說明:
函數(shù) | 目的/作用 |
---|---|
用于存儲文本字符數(shù)組的函數(shù),結(jié)合字符數(shù)組,等等 | |
blanks | 創(chuàng)建空白字符的字符串 |
cellstr | 從字符數(shù)組中創(chuàng)建字符串單元格數(shù)組 |
char | 轉(zhuǎn)換為字符數(shù)組 (字符串)
|
iscellstr | 確定輸入是否是字符串的單元格數(shù)組 |
ischar | 確定項是否為字符數(shù)組
|
sprintf | 將數(shù)據(jù)格式化為字符串 |
strcat | 水平串聯(lián)字符串
|
strjoin | 將單元格數(shù)組中的字符串合并為單個字符串
|
識別字符串部分的函數(shù),查找和替換子串 | |
ischar | 確定項是否為字符數(shù)組
|
isletter | 按照字母次序的數(shù)組元素
|
isspace | 數(shù)組元素是空格字符 |
isstrprop | 確定字符串是否為指定類別
|
sscanf | 從字符串讀取格式化數(shù)據(jù) |
strfind | 在另一個字符串中找到一個字符串 |
strrep | 查找和替換字符串 |
strsplit | 在指定分隔符處拆分字符串 |
strtok | 字符串的選定部分 |
validatestring | 檢查文本字符串的有效性 |
symvar | 在表達式中確定符號變量
|
regexp | 匹配正則表達式 (區(qū)分大小寫)
|
regexpi | 匹配正則表達式 (不區(qū)分大小寫)
|
regexprep | 使用正則表達式替換字符串
|
regexptranslate | 將字符串轉(zhuǎn)換為正則表達式
|
字符串比較函數(shù) | |
strcmp | 比較字符串 (區(qū)分大小寫)
|
strcmpi | 比較字符串 (不區(qū)分大小寫)
|
strncmp | 比較字符串的前 n 個字符 (區(qū)分大小寫)
|
strncmpi | 比較字符串的前 n 個字符 (不區(qū)分大小寫)
|
改變字符串大寫或小寫,創(chuàng)建或刪除空格的函數(shù) | |
deblank | 從字符串末尾分隔尾隨空格
|
strtrim | 從字符串中刪除前導(dǎo)空格和尾隨空格 |
lower | 將字符串轉(zhuǎn)換為小寫 |
upper | 將字符串轉(zhuǎn)換為大寫 |
strjust | 對齊字符數(shù)組 |
接下來對上述的字符串的函數(shù)進行舉例說明:
在MATLAB中建立一個腳本文件,輸入下述代碼:
A = pi*1000*ones(1,5);
sprintf(' %f
%.2f
%+.2f
%12.2f
%012.2f
', A)
運行該文件,顯示以下結(jié)果:
ans =
3141.592654
3141.59
+3141.59
3141.59
000003141.59
在MATLAB中建立一個腳本文件,輸入下述代碼:
%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, ",")
運行該文件,顯示以下結(jié)果:
str1 =
red blue green yellow orange
str2 =
red , blue , green , yellow , orange
在MATLAB中建立一個腳本文件,并輸入下述代碼:
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)
運行該文件,顯示以下結(jié)果:
new_student =
'Poulomi Dutta'
first_names =
Columns 1 through 6
'Zara' 'Neha' 'Monica' 'Madhu' 'Madhu' 'Bhawna'
Columns 7 through 10
'Nuha' 'Reva' 'Sunaina' 'Sofia'
在MATLAB中建立一個腳本文件,輸入下述代碼:
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
運行該文件,顯示以下結(jié)果:
str1 =
This is test
str2 =
This is text
ans =
This is test and This is text are not equal
更多建議: