位置:首頁 > 高級語言 > Matlab教學 > MATLAB字符串

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