版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章: 字符串处理,西安电子科技大学 雷达信号处理国防科技重点实验室,本章主要内容,7.1 字符阵列 7.2 字符串单元阵列 7.3 字符串比较 7.4 字符串搜索与取代 7.5 字符串与数值之间的变换 7.6 综合设计示例 7.7 字符串函数,7.1 字符阵列,在MATLAB中,字符阵列也称为字符串,MATLAB 提供了建立和处理字符串的函数,这样使MATLAB具备 字符处理能力,甚至可设计简单的数据库管理系统。 在MATLAB中可使用汉字,这对我们来说是特别有 用的,比如注释等。 字符串输入时应用单引号括起来。若检查其类型,用 class(A); ans= char,eg1: name=
2、西安电子科技大学; class(name) ans =char size(name) ans =1 8 这说明每个汉语只占用一个字符位置, 这一点与 其它语言略有不同。 eg2: name1=MATLAB; size(name1) ans = 1 6,建立二维字符阵列 确保每行上的字符数相等 如果长度不等,用blanks函数补空格 当从字符阵列中提取字符串时,利用deblank函数删除字符串末尾多余的空格 eg3: A=signal processing; B=filter design; C=genetic algorithm; disp(length(A), length(B), leng
3、th(C); 17 13 17 BOOK=A;B blanks(4);C,BOOK = 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 字符串单元阵列,利用字符串单元阵列存储字符串,方便、灵活 字符串单元阵列函数: cellstr: 字符阵列转换为字符串单元阵列 char: 字符串单元阵列转换为字符阵列, 而且自动添加空格,eg5
4、: bookcell=cellstr(BOOK); length(bookcell2); ans=13 BOOK1=char(bookcell),bookcell = signal processing filter design genetic algorithm,BOOK1 = signal processing filter design genetic algorithm,7.3 字符串比较,字符串比较方式有 比较两个字符串或其部分是否相同; 比较两个字符串中的个别字符是否相同; 对字符串中的每个元素进行归类(如是否为英文字母) 一、比较字符串是否相同 strcmp 比较两个字符串是否
5、相同 strcmpi 比较两个字符串是否相同(忽略大小写) strncmp 比较两个字符串的前n个字符是否相同 strncmpi 比较两个字符串的前n个字符是否相同(忽略大 小写),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 当待比较相同时,返回值为逻辑真(1),else 0。 注意,它与C语言中的strcmp()函数
6、相反,在C中,当两个子字符串相同时,返回值为0。,二、比较字符是否相同 当要比较两个字符串中个别字符是相同时,可采用MATLAB 的关系操作符。 eg7 str1=hello; str2=help!; k=str1=str2 k =1 1 1 0 0 实际上,还可以采用其它的关系操作符(、 、!),这样就可以比较两字符串的大小关系,当 然实际确定其大小关系时采用的是其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,三、英文字母的检测 isletter:检测字符串是否有英文字
7、母或是否全部由字母构成 isspace:检测字符串是否有空格 eg9 myaddr=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这两个函数可检测字符串是否全部由字母和空格构成。,eg10: str1=I wish this book can be beneficial to you; let1=isletter(str1); let2=isspace(str1); let3=le
8、t1|let2; if all(let3) disp(所有字符均为英文字母或空格) else disp(字符中包含非英文字母和空格) end 执行后得: 所有字符均为英文字母或空格 如果输入改为 str1=My post address is XiDian Box 134; 则执行后得: 字符中包含非英文字母和空格,7.4 字符串搜索与取代,MATLAB为字符串的搜索与取代提供了几个函数findstr、strmatch、strrep、strtok等,这几个函数的灵活运用,可完成比较复杂的任务。例如 str=Example 12 made on 10/15/99; k=findstr(str,1
9、0) %字符位置的搜索 k = 20 str1=strrep(str,15,18) %字符替代 str1 = Example 12 made on 10/18/99 这里将str中的日期修改为1999年10月18日,利用strtok可找出字符串的第一个单词(第 一个分隔符之前的字符串): str2=strtok(str1) str2=Example 利用strtok函数还可以完成从英文句子中提取单词,例如我们可编写函数: function allwords=words(sentence) r=sentence; allwords=; while (any(r) w,r=strtok(r); a
10、llwords=strvcat(allwords,w); End %字符串的垂直连接,这时输入 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 字符串与数值之间的变换,MATLAB提供了一组函数可用来在各种数制之间进行变换。例如 x=53176251; y=int2str(x) y = 53176251 whos Name Size Bytes Class x 1x1 8 double a
11、rray y 1x8 16 char array Grand total is 9 elements using 24 bytes 从这可以看出,x只占用一个存储单元(8个字节),而当它变换成字符时占用了8个字符单元(每个单元占用2个字节)。,在表示成字符串时,还可以指定位数,如 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
12、) d3 = 156 t3=dec2base(d3,3) t3 = 12210 其中,最后一组为将三进制数12210变换成十进制数,并反之。,只有利用num2str函数才能将含小数的数值变换成字符串,从而在图形标题或标记中使用数据相关的数值。例如,假设已利用plot(x,y)绘制出图形,则可给x轴加上这样的标记: str1=num2str(min(x); str2=num2str(max(x); str=Vaue of x is from ,str1, to ,str2; xlabel(str),7.6 综合设计示例,详见P321,7.7 字符串函数,字符串函数,字符串测试函数,字符串操作函数
13、,字符串与数值之间的变换,数制变换函数,习 题,1. 在-1,1区间上绘制出y=-2x2+4的曲线, 并在图中标注出最大值点的坐标. 2. 任意给定一句英文句子, 请提取其每个单词, 并设计一结构, 其域有Name、No、Length、Value,分别用于存储每个单词的名称、句中序号、单词长度、单词各个字符的ASCII码。,某宿舍有4名同学,3门课程的期末考试成绩如下表所示: 姓名(name)liming wanglei liujun zhangxiao 成绩(score)85 75 78 83 84 92 80 69 77 90 75 81 要求编程完成以下内容: 基于表格内容构建结构阵列,
14、结构名为student。通过访问结构阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的结构阵列。 最终得到的结构阵列可表示为,student .name .score .mean 基于表格内容建立二维单元阵列,单位阵列中每一行保存一个学生的信息。通过访问单元阵列,计算每一个学生的平均分,将平均分作为一个新的域,更新已经建立的单元阵列。 最终得到的单元阵列格式为: 姓名 成绩 平均分 学生1,七、(15分)某一过程中通过测量得到: T 0 0.2 0.4 0.6 0.8 1.0 2.0 5.0 Y 1.0 1.5 1.9 2.1 2.3 2.4 2.6 -4.0 编程完成以下内容: (1) 分别采用三阶和四阶多项式对数据进行拟合;(提示:采用polyfit进行多项式拟合;调用格式为p = polyfit(t,y,n),n为多项式阶数,p为得到的多项式系数) (2) 以图形的方式比较拟合效果,要求把图形窗口分成两个子窗口,分别绘制出原始测量值和拟合后的曲线;,(3) 根据已知时刻点的测量值,计算两种拟合方法的均方误差(MSE)。 ,其中 为上面表中的原始测量值, 为拟合后的估计值。,1利用randn函数产生均值为0,方差为1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年重庆九龙坡区第一实验小学江州校区教师招聘真题
- 喂养残余量评估规范:定义、方法与临床干预策略
- 2025年中国港口博物馆招聘真题
- 2025年衡阳市教育局直属事业单位招聘教师真题
- 2025年宁德市霞浦县教育局下属学校招聘考试真题
- 广州发展乳源桂头大坝村地面分布式光伏渔光互补综合利用项目水保验收报告
- 特种设备报废管理制度
- 水利工程资料整编制度
- 教师应急能力不足问题清单及整改措施
- 教师作业批改不及时个人整改措施
- 《纳米技术与生活》课件
- 计算机网络安全技术保护措施
- 2023年铸钢件生产工序作业指导书
- 《电力建设安全工作规程 第2部分:电力线路》
- 安全隐患排查监理细则范文
- CJJT 268-2017 城镇燃气工程智能化技术规范
- 花生有害生物综合治理技术(花生生产技术课件)
- 07FS02 防空地下室给排水设施安装
- 淮安和府项目PC构件吊装专项施工方案
- 工业自动化控制plc软著
- GB/T 33683-2017陆上石油物探测量与定位技术规范
评论
0/150
提交评论