本節我們學習如何在MATLAB中創建一個字符串。
例如:
my_string = '搬磚工程師domi'
MATLAB執行上述語句,返回以下結果:
my_string =
'搬磚工程師domi'
MATLAB 認為所有變量,數組和字符串被視為字符數組。
讓我們使用命令檢查上面創建的變量:
whos
MATLAB執行上面的語句,返回以下結果:
Name Size Bytes Class Attributes
my_string 1x9 18 char
你可以使用數字轉換函數,如 uint8 或 uint16 字符串中的字符轉換成數字代碼。?
char 函數整數向量轉換回字符
詳細例子
在MATLAB中建立一個腳本文件,輸入下述代碼:
my_string = '搬磚工程師domi'str_ascii = uint8(my_string) % 8-bit ascii valuesstr_back_to_char= char(str_ascii) str_16bit = uint16(my_string) % 16-bit ascii valuesstr_back_to_char = char(str_16bit)
運行該文件,顯示以下結果:
my_string =
'搬磚工程師domi'str_ascii =
1×9 uint8 行向量
255 255 255 255 255 100 111 109 105str_back_to_char =
'?????domi'str_16bit =
1×9 uint16 行向量
列 1 至 8
25644 30742 24037 31243 24072 100 111 109
列 9
105str_back_to_char =
'搬磚工程師domi'
MATLAB矩形字符數組
目前為止我們已經討論過的字符串的字符數組是一維,但是我們需要更立體的文本數據存儲在我們的程序中。這是通過創建的矩形的字符數組。
建立一個矩形字符數組的最簡單的方法是通過連接兩個或兩個以上的一維字符數組,無論是垂直或水平的要求。
您可以通過以下方式之一合并垂直字符串:
詳細例子
在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')
運行該文件,顯示以下結果:
doc_profile =Zara Ali Sr. Surgeon R N Tagore Cardiology Research Centerdoc_profile =Zara Ali Sr. Surgeon RN Tagore Cardiology Research Center
采取下述方式之一橫向合并字符串:
詳細例子
在MATLAB中建立一個腳本文件,并輸入下述代碼:
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 Centerprofile =Zara Ali,Sr. Surgeon,R N Tagore Cardiology Research Center
結合成的字符串單元陣列
從前面的討論,很顯然,具有不同長度的字符串相結合,可能是一個痛苦作為在陣列中的所有字符串具有相同的長度。我們已經使用空格的字符串的結尾,其長度相等。
然而,有更有效的方式結合字符串轉換成一個單元陣列的陣列。
MATLAB單元陣列可以容納不同尺寸和類型的數據,在一個數組中。單元格陣列提供了一個更靈活的方式來存儲不同長度的字符串。
cellstr 函數將字符數組轉換成字符串單元陣列。
詳細例子
在MATLAB中建立一個腳本文件,輸入下述代碼:
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 創建空白字符的字符串 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 對齊字符數組
詳細例子
接下來對上述的字符串的函數進行舉例說明:
格式化字符串
在MATLAB中建立一個腳本文件,輸入下述代碼:
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
加入字符串
在MATLAB中建立一個腳本文件,輸入下述代碼:
%cell array of stringsstr_array = {'red','blue','green', 'yellow', 'orange'};
% Join strings in cell array into single stringstr1 = strjoin("-", str_array)str2 = strjoin(",", str_array)
運行該文件,顯示以下結果:
str1 =red blue green yellow orangestr2 =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 namesfirst_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'
比較字符串
在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
運行該文件,顯示以下結果:
str1 =This is teststr2 =This is textans =This is test and This is text are not equal
?
總結
以上是生活随笔 為你收集整理的MATLAB-字符串 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。