《matlab第六章字符串處理.ppt》由會員分享,可在線閱讀,更多相關《matlab第六章字符串處理.ppt(17頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第七章 字符串處理,7.1字符陣列,在MATLAB中,每個字符按16位ASC碼儲存,這大大方便了在MATLAB中使用雙字節(jié)內(nèi)碼字符集,如漢字系統(tǒng)。利用double和char函數(shù)可在字符與ASC碼之間進行轉(zhuǎn)換。,一、字符與ASCII碼之間的變換 利用double函數(shù)和char函數(shù)可實現(xiàn)在字符與其ASCII碼之間進行變換。 例如: name=河北大學 %字符串 a=double(name) %轉(zhuǎn)變?yōu)锳SCII碼 name=char(a) %ASCII碼轉(zhuǎn)變?yōu)樽址?二、建立二維字符陣列 注意:建立二維陣列時,應注意確保每行上的字符數(shù)相等,如果長度不等,應在其后補空格。可以利用blanks(n)函數(shù)來
2、添加空格。利用deblank函數(shù)可以刪除字符串末尾多余的空格。 例如: s1=welcome to hebei university s2=you are welcome to my hometown s=s1blanks(3);s2,7.2 字符串單元陣列 字符串單元陣列中每個元素均為字符串,而且已經(jīng)刪除了末尾的空格。 1.利用cellstr函數(shù)可以方便的將字符陣列變換成字符串單元陣列 例如: cell=cellstr(s) 2.利用char函數(shù)可以進行反變換 例如:s=char(cell),7.3字符串比較,比較字符串的方式: 1,比較兩個字符串或其部分是否相同; 2,比較兩個字符串中個別
3、字符是否相同 3,可對字符串中的每個元素進行歸類。,7.3字符串比較,一、比較字符串是否相同 strcmp函數(shù)用于比較字符串是否相同 strcmpi函數(shù)用于比較時忽略大小寫 strncmp函數(shù)用于比較兩個字符串的前n個字符是否相同 strncmpi函數(shù)比較時忽略大小寫,例如: s1=help,s2=hello,s3=Hello k1=strcmp(s1,s2) 則k1=0 k2=strcmpi(s1,s3) 則k2=1 二、比較字符是否相同 利用關系操作符。,三、英文字母的檢測 isletter函數(shù)和isspace函數(shù),返回結果為(1)或假(0)。 例如:s=hebei 2004 letter
4、=isletter(s) space=isspace(s),7.4 字符串搜索與取代 利用findstr(查找某個字符串) strmatch(字符串匹配) strrep(修改字符串) strtok(提取字符串的首部) 等函數(shù)可以完成字符串的搜索與取代 例如: function allwords=words(sentence) r=sentence allwords=; While(any) w,r=strtok(r) Allwords=strvcat(allwords,w),7.5 字符串與數(shù)值之間的變換 常用的有 int2str(數(shù)值轉(zhuǎn)換為字符) num2str(含有小數(shù)的數(shù)值轉(zhuǎn)換為字符)
5、bin2dec(二進制轉(zhuǎn)換為十進制) hex2dec(十六進制轉(zhuǎn)換為十進制)base2dec(三進制轉(zhuǎn)換為十進制) dec2base(十進制轉(zhuǎn)換為三進制),7.7字符串函數(shù),,一般命令 1,char 功能:建立字符矩陣 格式: s=char(x),7.7字符串函數(shù),2,double 功能:字符陣列變換成雙精度數(shù)值 格式: y=double(x) 3,cellstr 功能:從字符陣列中建立單元陣列 格式:c=cellstr(s),7.7字符串函數(shù),,字符串測試 1,ischar 功能:檢測到字符陣列時為邏輯真 格式:k=ischar(a),7.7字符串函數(shù),,字符串操作 1,strcat 功能:
6、字符串連接 格式:t=strcat(s1,s2,s3.) 2,strvcat 功能:字符串的直接連接 格式: t=strvcat(s1,s2,s3.),例1 混合頻率信號成分分析,有一信號x由三種不同頻率的正弦信號混合而成,通過得到信號的DFT,確定出信號的頻率及其強度。程序如下 t=0:1/119:1; x=5*sin(2 * pi * 20 * t)+3*sin(2 * pi * 30 * t)+sin(2 * pi *45 * t); y=fft(x); m=abs(y); f=(0:length(y)-1)*119/length(y); figure(1) Subplot(2,1,1),plot(t,x),grid on title(多頻率混合信號),ylabel(Inputitx),xlabel(Time) subplot(2,1,2),plot(f,m) ylabel(Abs.Magnitude),grid on xlabel(Frequency (Hertz),