MATLAB字符串

2022-03-28 15:35 更新

本節(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)換回字符: 

詳細(xì)例子

在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在線教程

MATLAB矩形字符數(shù)組

目前為止我們已經(jīng)討論過的字符串的字符數(shù)組是一維,但是我們需要更立體的文本數(shù)據(jù)存儲在我們的程序中。這是通過創(chuàng)建的矩形的字符數(shù)組。

建立一個矩形字符數(shù)組的最簡單的方法是通過連接兩個或兩個以上的一維字符數(shù)組,無論是垂直或水平的要求。

您可以通過以下方式之一合并垂直字符串:

  • 使用 MATLAB 連接運算符 [] 和分離每行一個分號(;)。請注意,在該方法中的每一行必須包含相同的字符數(shù)。不同長度的字符串,應(yīng)該根據(jù)需要使用空格字符。

  • 使用 char 函數(shù)。如果字符串長度不同和 char 補齊較短尾隨空白,使每一行都有相同數(shù)量的字符的字符串。

詳細(xì)例子

在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。此方法刪除尾隨空格輸入

詳細(xì)例子

在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

將字符串組合成單元格數(shù)組

從前面的學(xué)習(xí)中,很明顯,組合不同長度的字符串可能會很痛苦,因為數(shù)組中的所有字符串都必須具有相同的長度。在字符串的末尾使用了空格,使其長度相等。

然而,組合字符串的更有效的方法是將生成的數(shù)組轉(zhuǎn)換為單元格數(shù)組。

MATLAB單元格數(shù)組可以在數(shù)組中保存不同大小和類型的數(shù)據(jù)。單元格數(shù)組提供了一種更靈活的方法來存儲不同長度的字符串。

?cellstr?函數(shù)將字符數(shù)組轉(zhuǎn)換為字符串的單元格數(shù)組。

詳細(xì)例子

在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中的字符串函數(shù)

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ù)組

詳細(xì)例子

接下來對上述的字符串的函數(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


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號