实验三字符串数组的使用、简单脚本文件和函数的编写[实验目的]
1.掌握字符串数组的创建和构造方法及常用字符串函数的使用。
2.熟练掌握MATLAB 控制流的使用方法。
3.熟悉M 脚本文件、函数文件的编写方法和技巧。
[实验原理]
与数值数组相比,串数组在MATLAB 中的重要性较小,但不可缺少。如果没有串数组及
相应的操作,那么数据可视化、图形用户界面的制作将会遇到困难。字符串与数值数组是两
种不同的数据类,它们的创建方式也不同。字符串的创建方式是:将待建的字符放在“单引
号对”中。注意,“单引号对”必须是在英文状态下输入,其作用是MATLAB 识别送来内容
“身份”所必需的,如A=’This is an example!’;就创建了一个字符串A。注意创建带
单引号的字符串时,每个单引号符用“连续2 个单引号符”标识。字符串的标识同数值数组
同,而且也可以使用size 指令观察串数组的大小。串数组的ASCII 码可以通过指令abs 和
double 来获取,而用char 指令可以把ASCII 码变为串数组,另外,MATLAB 可以很好的支持中文字符串数组。对于复杂串数组的创建,一是可以直接创建,但是要保证同一串数组的各行字符数相等,即保证各行等长,不推荐,太繁琐。二是可以利用串操作函数创建多行数组,比如char,
str2mat, strvcat 等,具体操作自己通过帮助体会。另外还可以通过转化函数产生数码字符长,比如A_str=int2str(A) 就是把整数数组A 转换成串数组,如果是非整数将被四舍五入后再转换,类似的函数还有num2str(把非整数数组转换为串数组,常用于图形中数据点的标识)、mat2str (把数值数组转换成输入形态的串数组,常与eval 指令配用)。
假如想灵活运用MATLAB 去解决实际问题,想充分调动MATLAB——科学技术资源,想理
解MATLAB 版本升级所依仗的基础,那么掌握M 脚本文件合函数的编写规则将十分有用。
用户通过本次实验,感受抽象概念的内涵、各指令间的协调,从感知上领悟MATLAB 编
程的优越和要领。
编写M 脚本文件的步骤:
●点击MATLAB 指令窗工具条上的New File图标,就可打开如上图所示的MATLAB 文
件编辑调试器MATLAB Editor/Debugger。其窗口名为untitled ,用户即可在空白窗口
中编写程序。
●点击编辑调试器工具条图标,在弹出的Windows 标准风格的“保存为”对话框中,
选择保存文件夹,键入新编文件名(如newfile.m),点动【保存】键,就完成了文件
保存。
●运行可有两种方法,一种是直接点击编辑调试工具条图标,即可直接运行;或者使
newfile.m 所在目录成为当前目录,或让该目录处在MATLAB 的搜索路径上,然后在命令窗口键入指令newfile+回车,便可得到运行结果。
●调试程序方法有多种,常见的是设置断点的方法,将光标移到程序欲执行到的位置,点击编
辑调试工具条图标,保存后运行,程序将停止在该语句位置并弹出编辑器界面等待用户下一步运行的指令,只有再次点击按钮,才继续向下执行。相应的按下按钮,表示清除所有断点。如果不设置断点,也
可以在程序中加入pause 指令,使得程序在此处暂停,只有用户按任意键程序才依次向下执行。则在pause 指令的前面位置我们可以通过交互的方式得到我们想要的信息,以检测程序的正确性。
编写MATLAB 脚本文件或函数文件时要区分开与C 语言格式的不同。MATALB 使用变量前
不需要声明数据类型,对于所有的数值型数据MATLAB 均以Double 型存储。另外编程时尽量
使用MATLAB 向量(数组)编程方式,可大大提高编程效率,尽量避免过多使用for 循环等
语句。
MATLAB 提供了五种控制流的结构:for 循环结构,while 循环结构,if-else-end 分支结构,以及switch-case 结果、try-catch 结构。这些控制指令用法与其他语言十分类似, 这里只给出简要说明。
For 循环: while 循环结构
if-else-end 结构
单
分支(常用) 双分支(常用) 多分支(常被swith-case 取代)
上面几条控制语句中,for 循环结构中x 称为循环变量,组命令(commands)被称为循环 体,循环体被重复执行的次数是确定的,该次数由for 指令后面的数组array 的列数决定。 换言之,循环变量依次取数组的各列,对于每个变量值,循环体被执行一次。
while 循环是首先检测expression 的值,如其值为逻辑真(非0),则执行组命令,当 组命令执行完毕,继续检测表达式的值,仍为真,循环执行组命令,一旦表达式值为假,就 结束循环。一般情况下,表达式的值是标量值,但MATLAB 允许其为一个数组,此时只有该 数组所有元素均为真时,MATLAB 才会执行循环体。若表达式为空数组,则不执行循环体。
if 指令判决和break 指令的配合使用,可以强制中止for 循环或while 循环。 switch-case 结构 try-catch 结构
switch 指令后面的表达式应为一个标量或者为一个字符串。对于标量形式的表达式,
比较这样进行:表达式==检测值i。对于字符串,MATLAB 将调用函数strcmp 来实现比较:strcmp(表达式,检测值i).
try-catch 结构,只有当MATLAB 在执行组命令1 时出现错误后,组命令2 才会被执行。
当执行组命令2 时又出错,MATLAB 将中止该结构。
随指令数的增加或随控制流复杂度的增加,以及重复计算要求的提出,采用M 脚本文件
进行编程较为适宜。这种脚本文件的构成比较简单,它是一串按照用户意图排列而成的
MATLAB 指令集合。脚本文件运行后,所产生的所有变量都驻留在MATLAB 基本工作空间中,
只要用户不使用clear 指令加以清除,且MATLAB 指令窗口不关闭,这些变量将一直保存在
基本工作空间中。
与脚本文件不同的,函数文件犹如一个“黑箱”。从外界只能看到传给它的输入量和送
出的计算结果,而内部运作是藏而不见的,特点是:
●从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的“函数声
明行”。该行还罗列出函数与外界的联系的全部“标称”输入输出宗量。但对“输入输出宗量”的标称数目并没有限制,即可以完全没有输入输出宗量,也可以是任意数目。形如unction sa=circle(r,s)。这里r、s 称为输入宗量,sa 称为输出宗量,函数名为circle,同时注意保存的函数文件名应与这里的函数名一致,即存为circle.m 文件。
●MATLAB 允许使用比“标称”数目较少的输入输出宗量实现对函数的调用,但前提是函数中应
该有相应的处理程序。
●从运行上看,与脚本文件不同,每当函数文件运行时,MATLAB 就会专门为它开辟一个临时的
工作空间,称之为函数工作空间。所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到return 时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。
●假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放在matlab二进制字符串转数组
该函数空间中,而不是存放在基本空间。
[实验内容]
一.串数组的创建和寻访
1.先请实际操作下例,以体会数值量与字符串的区别
clear %清除所有内存变量
a=12345.6789 %给变量a 赋数值标量
class(a) %对变量a的类别进行判断
a_s=size(a) %数值数组a 的“大小”
b='S' %给变量b赋字符标量(即单个字符)
class(b) %对变量b的类别进行判断
b_s=size(b) %符号数组b 的“大小
whos %观察变量a,b 在内存中所占字节
a =
1.2346e+004
ans =
double
a_s =
1 1
b =
S
ans =
char
b_s =
1 1
Name Size Bytes Class Attributes
a 1x1 8 double
a_s 1x2 16 double
ans 1x4 8 char
b 1x1 2 char
b_s 1x2 16 double
2.已知串数组a=”This is an example.”,试将其到序输出。
a='This is an example.'
fliplr(a)
a =
This is an example.
ans =
.
elpmaxe na si sihT
3.接上题,试执行ascii_a=double(a),观察其ASCII 码,并将ASCII 码变回字符串。
Asci_a=double(a)
char(Asci_a)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论