九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
MATLAB字符和字符串
3.字符和字符串
在MATLAB中,幾個字符(Character)可以構(gòu)一個字符串(String)。一個字符串被視為一個行向量,而字符串中的每一個字符(含空格符),則是以其ASCII的形式存放于此向量的每一個元素中,只是它的外顯形式仍然是可讀的字符。字符串類型在數(shù)據(jù)的可視化、應(yīng)用程序的交互方面有著非常重要的作用。
3.1 創(chuàng)建字符串
1.一般字符串的創(chuàng)建
在MATLAB中,所有的字符串都用兩個單引號括起來,進行輸入賦值。如在MATLAB命令窗口中輸入:
>> a='matlab'
a =
matlab
字符串的每個字符(空格也是字符)都是相應(yīng)矩陣的一個元素,上述變量a是1×6階的矩陣,可以用size(a)命令查得:
>> size(a)
ans =
1     6       %  1行6列
2.中文字符串的創(chuàng)建
中文也可以作為字符串的內(nèi)容。但需要注意的是:在中文字符串的輸入過程中,兩邊的單引號必須是英文狀態(tài)的單引號。例如:
>> A='中文字符串輸入演示'
A =
中文字符串輸入演示
3.字符串的尋訪
在MATLAB中,字符串的尋訪可以通過其坐標來實現(xiàn)。在一個字符串中,MATLAB按照從左至右的順序?qū)ψ址械淖址来尉幪枺?,2,3,…)。進行字符串的尋訪,只需要像尋訪一般矩陣那樣即可。例如在前面創(chuàng)建了中文字符串A之后可以得到:
>> A(3:5)
ans =
字符串
4.字符串數(shù)組的創(chuàng)建
二維字符串(數(shù)組)的建立也非常簡單??梢韵駭?shù)值數(shù)組的建立那樣直接輸入,也可以使用str2mat等函數(shù)建立。
【例3-6】  多行串數(shù)組的直接輸入示例。
>> clear
>> S=['This string array '
'has multiple rows.']
S =
This string array
has multiple rows.
>> size(S)
ans =
2    18
需要注意的是:在直接輸入多行字符串數(shù)組的時候,每一行的字符個數(shù)必須相同。
【例3-7】  使用函數(shù)str2mat創(chuàng)建多行串數(shù)組示例。
>> a=str2mat('這','字符','串數(shù)組','','由5 行組成')
a =
字符
串數(shù)組
由5 行組成
>> size(a)
ans =
5    6
在使用函數(shù)str2mat創(chuàng)建字符串數(shù)組的時候,不用擔心每一行的字符個數(shù)是否相等,函數(shù)在運行中會以字符最多的一行為準,而將其他行中的字符以空格補齊。
3.2  字符串比較
在MATLAB中,有多種對字符串進行比較的功能:
(1)比較兩個字符串或者子串是否相等;
(2)比較字符串中的單個字符是否相等;
(3)對字符串內(nèi)的元素分類,判斷每個元素是否是字符或者空格。
用戶可以使用下面4個函數(shù)中的任意一個,來判斷兩個輸入字符串是否相等。
(1)strcmp:判斷兩個字符串是否相等。
(2)strncmp:判斷兩個字符串的前n個字符是否相等。
(3)strcmpi和strncmpi:這兩個函數(shù)的作用分別與strcmp和strncmp相同,只是在比較的過程中忽略了字母大小寫。
考慮有這兩個字符串:
>>str1 = 'hello';
>>str2 = 'help';
字符串str1和str2并不相等,所以使用strcmp函數(shù)來判斷的話,將會返回邏輯0(false)。例如:
>>C = strcmp(str1,str2)
C =
0
由于字符串str1和str2的前3個字符相等,所以用strncmp函數(shù)來比較前3個以內(nèi)字符,將會返回邏輯1(true)。例如:
>>C = strncmp(str1, str2, 2)      %  比較前兩個字符
C =
1
下面介紹如何對大小寫不同的情況進行比較。
>> str3 = 'Hello';
>> D = strncmp(str1, str3,2)                % 對大小寫敏感
D =
0
>> F = strncmpi(str1, str3,2)               % 對大小寫不敏感
F =
1
用戶可以使用關(guān)系運算符進行字符串的比較,只要比較的數(shù)組具有相同的尺寸,或者其中一個是標量即可。例如,可以使用(==)運算符來判斷兩個字符串中有哪些字符相等。
>>A = 'fate';
>>B = 'cake';
>>A == B
ans =
0   1  0   1
所有的關(guān)系運算符都可以用來比較字符串相對應(yīng)位置上的字符。
3.3  字符串查找與替換
MATLAB提供了很多函數(shù)供用戶進行字符串的查找與替換。更加強大的是,MATLAB也支持在字符串的查找與替換中使用正則表達式。通過靈活使用正則表達式,可以對字符串進行各種形式的查找與替換。至于正則表達式的應(yīng)用,用戶可以查詢幫助文檔中的Regular Expressions部分。
【例3-8】  使用strrep函數(shù)進行字符串查找替換示例。
考慮有這樣一個標簽:
>> label = 'Sample 1, 03/28/15'
label =
Sample 1, 03/28/15
函數(shù)strrep用于實現(xiàn)一般的查找與替換功能。本例中使用strrep函數(shù),將日期從'03/28'替換為'03/30'。命令如下:
>> newlabel = strrep(label, '28', '30')
newlabel =
Sample 1, 03/30/15
【例3-9】  使用findstr函數(shù)進行字符串查找示例。
findstr函數(shù)用于返回某一子串在整個字符串中的開始位置。例如在字符串中查找字母a和oo出現(xiàn)的位置,可以使用如下命令:
>> strtemp='have a good time!'
strtemp =
have a good time!
>> position1= findstr('a', strtemp)
position1 =
2     6
>> position2 = findstr('oo', strtemp)
position2 =
9
從本例可以看出,字母a出現(xiàn)在第2和第6兩個位置,這說明findstr函數(shù)返回的位置信息包括所有出現(xiàn)的子串的位置。而字母'oo'字串只出現(xiàn)了一次,所以只返回一個位置信息。
strtok 函數(shù)用于返回分隔字符第1次出現(xiàn)之前的字符。如果不自行指定分隔字符,默認的分隔字符則是泛空格符字符,因此用戶可以使用strtok函數(shù)將一個句子按照單詞分開。
【例3-10】  使用strtok函數(shù)進行字符串查找示例。
>> t='I have walked out on a handful ofmovies in my life.';  %  測試字符串
>> remain = t;
>> while true                                               % 使用while循環(huán)結(jié)構(gòu)
[str, remain] = strtok(remain);                          %  以默認的空格為分隔符查找
if isempty(str), break;  end                          %  循環(huán)跳出控制
disp(sprintf('%s', str))                                %  顯示結(jié)果
end
以下就是使用strtok函數(shù)進行多次查找得到的結(jié)果:
I
have
walked
out
on
a
handful
of
movies
in
my
life.
函數(shù)strmatch用于查找一個字符數(shù)組中以指定子串開始的字符串,該函數(shù)返回的是以指定子串開始的行編號。
【例3-11】  使用strmatch函數(shù)進行字符串查找示例。
>> maxstrings = strvcat('max', 'minimax','maximum') %  測試字符串數(shù)組
maxstrings =
max
minimax
maximum
>> strmatch('max', maxstrings)       %  在測試字符串數(shù)組中查找以max開頭的字符串
ans =
1
3
在本例中第二行minimax雖然也包含max子串,但是這個子串的并不是以max開始的,所以在查找過程中沒有返回第2行為結(jié)果。
3.4 類型轉(zhuǎn)換
在MATLAB中允許不同類型的數(shù)據(jù)和字符串類型的數(shù)據(jù)之間進行轉(zhuǎn)換,這種轉(zhuǎn)換需要使用不同的函數(shù)完成。另外,同樣的數(shù)據(jù),特別是整數(shù)數(shù)據(jù),有很多種表示的格式,例如十進制、二進制或者十六進制。在C語言中,需要使用printf函數(shù)通過相應(yīng)的格式字符串就可以輸出不同格式的數(shù)據(jù)。而在MATLAB中,則直接提供了相應(yīng)的函數(shù)可以完成數(shù)制的轉(zhuǎn)換。表3-2和表3-3分別列舉了這些函數(shù)。
表3-2       數(shù)字與字符串之間的轉(zhuǎn)換函數(shù)
函     數(shù)
說    明
函    數(shù)
說    明
num2str
將數(shù)字轉(zhuǎn)換為字符串
str2num
將字符串轉(zhuǎn)換為數(shù)字
int2str
將整數(shù)轉(zhuǎn)換為字符串
sprintf
格式化輸出數(shù)據(jù)到命令行窗口
mat2str
將矩陣轉(zhuǎn)換為eval函數(shù)可以使用的字符串
sscanf
讀取格式化字符串
str2double
將字符串轉(zhuǎn)換為雙精度類型的數(shù)據(jù)
表3-3       不同數(shù)值之間的轉(zhuǎn)換函數(shù)
函    數(shù)
說    明
函    數(shù)
說    明
hex2num
將十六進制整數(shù)字符串轉(zhuǎn)換為雙精度數(shù)據(jù)
dec2bin
將十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)字符串
hex2dec
將十六進制整數(shù)字符串轉(zhuǎn)換為十進制數(shù)據(jù)
base2dec
將指定數(shù)制類型的數(shù)字字符串轉(zhuǎn)換為十進制整數(shù)
dec2hex
將十進制數(shù)據(jù)轉(zhuǎn)換為十六進制整數(shù)字符串
dec2base
將十進制整數(shù)轉(zhuǎn)換為指定數(shù)制類型的數(shù)字字符串
bin2dec
將二進制整數(shù)字符串轉(zhuǎn)換為十進制整數(shù)
在表3-2列舉的數(shù)字與字符串之間的轉(zhuǎn)換函數(shù)中,常用的是num2str和str2num。這兩個函數(shù)在MATLAB的圖形用戶界面編程中應(yīng)用較多。
【例3-12】  num2str和str2num函數(shù)用法實例。
>> a=['1 2';'3 4']        % 創(chuàng)建一個字符串數(shù)組
a =
1 2
3 4
>> b=str2num(a)        % 將字符串轉(zhuǎn)換為數(shù)值形式
b =
1     2
3     4
>> c=str2num('1+2i')         % 將字符串轉(zhuǎn)換為數(shù)值形式
c =
1.0000 +2.0000i
>> d=str2num('1 +2i')         % 將字符串轉(zhuǎn)換為數(shù)值形式
d =
1.0000 +0.0000i   0.0000 + 2.0000i>>e=num2str(rand(3,3),6)         %  將數(shù)值轉(zhuǎn)換為字符串形式
e =
0.814724    0.913376     0.278498
0.905792    0.632359     0.546882
0.126987   0.0975404     0.957507
>> whos
Name      Size            Bytes  Class    Attributes
a         2x3                12  char
b         2x2                32  double
c         1x1                16  double   complex
d         1x2                32  double   complex
e         3x35              210  char
本例中轉(zhuǎn)換生成變量c和d時得到了不同的結(jié)果,主要原因是在變量d中,數(shù)字 “1”和字符“+2i”之間存在空格,而加號“+”和數(shù)字“2”之間沒有空格,所以轉(zhuǎn)換的結(jié)果與生成變量c時不同,創(chuàng)建變量c的時候,在數(shù)字“1”、加號“+”和數(shù)字“2”之間都存在空格。為了避免出現(xiàn)上述問題,可以使用str2double函數(shù),但是該函數(shù)僅能轉(zhuǎn)換標量,不能轉(zhuǎn)換矩陣或者數(shù)組。
使用num2str函數(shù)將數(shù)字轉(zhuǎn)換為字符串時,可以指定字符串所表示的有效數(shù)字位數(shù),詳細信息可以查閱MATLAB的help文檔。
3.5  字符串應(yīng)用函數(shù)小結(jié)
MATLAB主要以矩陣計算聞名于世,除此以外該軟件在字符串處理方面也提供了一系列非常強大的函數(shù)。表3-4對常用字符串函數(shù)進行了分類小結(jié)。
表3-4       字符串函數(shù)
函    數(shù)
說    明
字符串創(chuàng)建函數(shù)
'str'
由單引號(英文狀態(tài))創(chuàng)建字符串
blanks
創(chuàng)建空格字符串
sprintf
將格式化數(shù)據(jù)寫入字符串
strcat
字符串組合
strvcat
豎直方向字符串組合
字符串修改函數(shù)
deblank
刪除尾部空格
lower
將所有字符小寫
sort
將所有元素升序或降序排列
strjust
字符串對齊
strrep
字符串替換
strtrim
刪除開始和尾部的泛空格符
upper
將所有字符大寫
字符串的讀取和操作
eval
將一個字符串作為MATLAB命令執(zhí)行
sscanf
格式讀入字符串
續(xù)表
函    數(shù)
說    明
字符串查找替換函數(shù)
findstr
查找子串
strcmp
字符串比較
strcmpi
字符串比較,忽略大小寫
strmatch
查找符合要求的行
strncmp
比較字符串的前N個字符
strncmpi
比較字符串的前N個字符,忽略大小寫
strtok
查找某個字符最先出現(xiàn)的位置
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Matlab數(shù)據(jù)&數(shù)組類型詳解(3)字符/字符串
Matlab數(shù)據(jù)類型
2MATLAB語言的基本要素(數(shù)值、字符串)
Matlab中num2str函數(shù)的用法
letcode滑動窗口-用戶flix
詳細解說STL string -- STLDetailString
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服