MATLAB字符串
在MATLAB中,創建一個字符串是相當簡單。事實上,我們已經用了很多次。例如,在命令提示符處輸入以下:
my_string = 'Tutorial''s Yiibai'
MATLAB 將執行上麵的語句,並返回以下結果:
my_string = Tutorial's Yiibai
MATLAB 認為所有變量,數組和字符串被視為字符數組。讓我們使用的命令檢查上麵創建的變量:
whos
MATLAB將執行上麵的語句,並返回以下結果:
Name Size Bytes Class Attributes my_string 1x16 32 char
有趣的是,你可以使用數字轉換函數,如uint8 或 uint16 字符串中的字符轉換成數字代碼。 char 函數整數向量轉換回字符:
例子
創建一個腳本文件,並鍵入下麵的代碼:
my_string = 'Tutorial''s Yiibai'; 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 = 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 = Tutorial's Yiibai 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 = Tutorial's Yiibai
矩形字符數組
到目前為止我們已經討論過的字符串的字符數組是一維,但是,我們需要存儲超過。我們需要更立體的文本數據存儲在我們的程序中。這是通過創建的矩形的字符數組。
創建一個矩形字符數組的最簡單的方法是通過連接兩個或兩個以上的一維字符數組,無論是垂直或水平的要求。
您可以合並垂直字符串通過以下方式之一:
-
使用 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)
當您運行該文件,它會顯示以下結果:
'Zara Ali' 'Sr. Surgeon' 'R N Tagore Cardiology Research Center'
MATLAB中的字符串函數
MATLAB 提供了許多創建,組合,分析,比較和處理字符串的字符串函數。
下表提供 MATLAB 中的字符串函數的簡要說明:
函數 | 目的/作用 |
---|---|
用於存儲文本字符數組的函數,結合字符數組,等等 | |
blanks | Create string of blank characters |
cellstr | Create cell array of strings from character array |
char | Convert to character array (string) |
iscellstr | Determine whether input is cell array of strings |
ischar | Determine whether item is character array |
sprintf | Format data into string |
strcat | Concatenate strings horizontally |
strjoin | Join strings in cell array into single string |
識彆字符串部分的函數,查找和替換子串 | |
ischar | Determine whether item is character array |
isletter | Array elements that are alphabetic letters |
isspace | Array elements that are space characters |
isstrprop | Determine whether string is of specified category |
sscanf | Read formatted data from string |
strfind | Find one string within another |
strrep | Find and replace substring |
strsplit | Split string at specified delimiter |
strtok | Selected parts of string |
validatestring | Check validity of text string |
symvar | Determine symbolic variables in expression |
regexp | Match regular expression (case sensitive) |
regexpi | Match regular expression (case insensitive) |
regexprep | Replace string using regular expression |
regexptranslate | Translate string into regular expression |
字符串比較函數 | |
strcmp | Compare strings (case sensitive) |
strcmpi | Compare strings (case insensitive) |
strncmp | Compare first n characters of strings (case sensitive) |
strncmpi | Compare first n characters of strings (case insensitive) |
改變字符串大寫或小寫,創建或刪除空格的函數 | |
deblank | Strip trailing blanks from end of string |
strtrim | Remove leading and trailing white space from string |
lower | Convert string to lowercase |
upper | Convert string to uppercase |
strjust | Justify character array |
例子
下麵的示例說明了上述的一些字符串的函數:
格式化字符串
創建一個腳本文件,並鍵入下麵的代碼:
A = pi*1000*ones(1,5); sprintf(' %f %.2f %+.2f %12.2f %012.2f ', 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 = 'Poulomi Dutta' first_names = Columns 1 through 6 'Zara' 'Neha' 'Monica' 'Madhu' 'Madhu' 'Bhawna' Columns 7 through 10 'Nuha' 'Reva' 'Sunaina' '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