版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第七章: 字符串處理,1. 字符陣列,2. 字符串單元陣列,3. 字符串比較,4. 字符串搜索與取代,5. 字符串與數(shù)值之間的 轉(zhuǎn)換,6. 綜合設(shè)計(jì)實(shí)例及字符 串函數(shù),7.1 字符陣列,在MATLAB中,字符陣列也稱(chēng)為字符串,MATLAB 提供了建立和處理字符串的函數(shù),這樣使MATLAB具備 字符處理能力,甚至可設(shè)計(jì)簡(jiǎn)單的數(shù)據(jù)庫(kù)管理系統(tǒng)。 在MATLAB中可使用漢字,這對(duì)我們來(lái)說(shuō)是特別有 用的,比如注釋等。 字符串輸入時(shí)應(yīng)用單引號(hào)括起來(lái)。若檢查其類(lèi)型,用 class(A); ans = char,eg1: name=西安電子科技大學(xué); class(name) ans =char size(na
2、me) ans =1 8 這說(shuō)明每個(gè)漢語(yǔ)只占用一個(gè)字符位置, 這一點(diǎn)與 其它語(yǔ)言略有不同。 eg2: name1=MATLAB; size(name1) ans = 1 6,建立二維字符陣列 確保每行上的字符數(shù)相等 如果長(zhǎng)度不等,用blanks函數(shù)補(bǔ)空格 當(dāng)從字符陣列中提取字符串時(shí),利用deblank函數(shù)刪除字符串末尾多余的空格 eg3: A=signal processing; B=filter design; C=genetic algorithm; disp(length(A), length(B), length(C); 17 13 17 BOOK=A;B blanks(4);C,BO
3、OK = signal processing filter design genetic algorithm,eg4: str1=BOOK(2,:); str1= filter design length(str1); ans=17 str2=deblanks(str1); length(str2); ans=13,7.2 字符串單元陣列,利用字符串單元陣列存儲(chǔ)字符串,方便、靈活 字符串單元陣列函數(shù): cellstr: 字符陣列轉(zhuǎn)換為字符串單元陣列 char: 字符串單元陣列轉(zhuǎn)換為字符陣列, 而且自動(dòng)添加空格,eg5: bookcell=cellstr(BOOK); length(bookce
4、ll2); ans=13 BOOK1=char(bookcell),bookcell = signal processing filter design genetic algorithm,BOOK1 = signal processing filter design genetic algorithm,7.3 字符串比較,字符串比較方式有 比較兩個(gè)字符串或其部分是否相同; 比較兩個(gè)字符串中的個(gè)別字符是否相同; 對(duì)字符串中的每個(gè)元素進(jìn)行歸類(lèi)(如是否為英文字母) 一、比較字符串是否相同 strcmp 比較兩個(gè)字符串是否相同 strcmpi 比較兩個(gè)字符串是否相同(忽略大小寫(xiě)) strncmp 比
5、較兩個(gè)字符串的前n個(gè)字符是否相同 strncmpi 比較兩個(gè)字符串的前n個(gè)字符是否相同(忽略大 小寫(xiě)),eg6,在MATLAB中輸入 str1=hello;str2=help; str3=Hello; k1=strcmp(str1,str2) k1 =0 k2=strcmp(str1,str3) k2 = 0 k3=strcmpi(str1,str3) k3 =1 k4=strncmp(str1,str2,3) k4 =1 當(dāng)待比較相同時(shí),返回值為邏輯真(1),else 0。 注意,它與C語(yǔ)言中的strcmp()函數(shù)相反,在C中,當(dāng)兩個(gè)子字符串相同時(shí),返回值為0。,二、比較字符是否相同 當(dāng)要比
6、較兩個(gè)字符串中個(gè)別字符是相同時(shí),可采用MATLAB 的關(guān)系操作符。 eg7 str1=hello; str2=help!; k=str1=str2 k =1 1 1 0 0 實(shí)際上,還可以采用其它的關(guān)系操作符(、 、?。@樣就可以比較兩字符串的大小關(guān)系,當(dāng) 然實(shí)際確定其大小關(guān)系時(shí)采用的是其ASCII碼。 eg8 A=abcd; B=aabe; k1=AB k1 = 0 1 1 0 k2=A=B k2 =1 1 1 0,k3=AB k3 = 0 0 0 1,三、英文字母的檢測(cè) isletter:檢測(cè)字符串是否有英文字母或是否全部由字母構(gòu)成 isspace:檢測(cè)字符串是否有空格 eg9 myad
7、dr=XiDian 134; letter=isletter(myaddr) letter =1 1 1 1 1 1 0 0 0 0 space=isspace(myaddr) space =0 0 0 0 0 0 1 0 0 0 利用isletter和isspace這兩個(gè)函數(shù)可檢測(cè)字符串是否全部由字母和空格構(gòu)成。,eg10: str1=I wish this book can be beneficial to you; let1=isletter(str1); let2=isspace(str1); let3=let1|let2; if all(let3) disp(所有字符均為英文字母或空
8、格) else disp(字符中包含非英文字母和空格) end 執(zhí)行后得: 所有字符均為英文字母或空格 如果輸入改為 str1=My post address is XiDian Box 134; 則執(zhí)行后得: 字符中包含非英文字母和空格,7.4 字符串搜索與取代,MATLAB為字符串的搜索與取代提供了幾個(gè)函數(shù)findstr、strmatch、strrep、strtok等,這幾個(gè)函數(shù)的靈活運(yùn)用,可完成比較復(fù)雜的任務(wù)。例如 str=Example 12 made on 10/15/99; k=findstr(str,10) %字符位置的搜索 k = 20 str1=strrep(str,15,1
9、8) %字符替代 str1 = Example 12 made on 10/18/99 這里將str中的日期修改為1999年10月18日,利用strtok可找出字符串的第一個(gè)單詞(第 一個(gè)分隔符之前的字符串): str2=strtok(str1) str2=Example 利用strtok函數(shù)還可以完成從英文句子中提取單詞,例如我們可編寫(xiě)函數(shù): function allwords=words(sentence) r=sentence; allwords=; while (any(r) w,r=strtok(r); allwords=strvcat(allwords,w); End %字符串的垂
10、直連接,這時(shí)輸入 str1=I wish this book can be beneficial to you; str1words=words(str1) str1words = I wish this book can be beneficial to you,7.5 字符串與數(shù)值之間的變換,MATLAB提供了一組函數(shù)可用來(lái)在各種數(shù)制之間進(jìn)行變換。例如 x=53176251; y=int2str(x) y = 53176251 whos Name Size Bytes Class x 1x1 8 double array y 1x8 16 char array Grand total is
11、 9 elements using 24 bytes 從這可以看出,x只占用一個(gè)存儲(chǔ)單元(8個(gè)字節(jié)),而當(dāng)它變換成字符時(shí)占用了8個(gè)字符單元(每個(gè)單元占用2個(gè)字節(jié))。,在表示成字符串時(shí),還可以指定位數(shù),如 p=num2str(pi,8) p = 3.1415927 d1=bin2dec(10101) d1 = 21 b1=dec2bin(d1,8) b1 = 00010101 d2=hex2dec(A1B) d2 = 2587 h2=dec2hex(d2,4) h2 = 0A1B,d3=base2dec(12210,3) d3 = 156 t3=dec2base(d3,3) t3 = 12210
12、 其中,最后一組為將三進(jìn)制數(shù)12210變換成十進(jìn)制數(shù),并反之。,只有利用num2str函數(shù)才能將含小數(shù)的數(shù)值變換成字符串,從而在圖形標(biāo)題或標(biāo)記中使用數(shù)據(jù)相關(guān)的數(shù)值。例如,假設(shè)已利用plot(x,y)繪制出圖形,則可給x軸加上這樣的標(biāo)記: str1=num2str(min(x); str2=num2str(max(x); str=Vaue of x is from ,str1, to ,str2; xlabel(str),7.6 綜合設(shè)計(jì)示例,詳見(jiàn)P321,7.7 字符串函數(shù),字符串函數(shù),字符串測(cè)試函數(shù),字符串操作函數(shù),字符串與數(shù)值之間的變換,數(shù)制變換函數(shù),習(xí) 題,1. 在-1,1區(qū)間上繪制出y=-2x2+4的曲線(xiàn), 并在圖中標(biāo)注出最大值點(diǎn)的坐標(biāo). 2. 任意給定一句英文句子, 請(qǐng)?zhí)崛∑?/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《客房服務(wù)管理》課件
- 《孟非的激勵(lì)人生》課件
- 《實(shí)驗(yàn)室管理》課件
- 2024-2025學(xué)年浙江省9+1聯(lián)考高一上學(xué)期期中考試歷史試題(解析版)
- 單位管理制度集合大合集【人事管理】十篇
- 單位管理制度集粹匯編【人力資源管理篇】
- 單位管理制度匯編大合集職員管理篇
- 單位管理制度合并匯編人力資源管理篇十篇
- 《漢字的結(jié)構(gòu)特點(diǎn)》課件
- 單位管理制度范例選集【員工管理篇】
- 初一《皇帝的新裝》課本劇劇本
- 幼兒園意識(shí)形態(tài)風(fēng)險(xiǎn)點(diǎn)排查報(bào)告
- 英美文學(xué)導(dǎo)論21級(jí)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 腰椎感染護(hù)理查房
- 2023-2024學(xué)年全國(guó)小學(xué)三年級(jí)上語(yǔ)文人教版期末考卷(含答案解析)
- 2024秋期國(guó)家開(kāi)放大學(xué)專(zhuān)科《法律咨詢(xún)與調(diào)解》一平臺(tái)在線(xiàn)形考(形考任務(wù)1至4)試題及答案
- 七年級(jí)全冊(cè)語(yǔ)文古詩(shī)詞
- 銷(xiāo)售業(yè)務(wù)拓展外包協(xié)議模板2024版版
- 2024軟件維護(hù)合同范本
- 2022-2023學(xué)年北京市海淀區(qū)七年級(jí)上學(xué)期期末語(yǔ)文試卷(含答案解析)
- 人教版初中美術(shù)八年級(jí)上冊(cè) 第一單元 第1課 造型的表現(xiàn)力 教案
評(píng)論
0/150
提交評(píng)論