matlab第3 字符串 (2)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
feval(f,x,y,…)
findstr(s1,s2) ischar(s)
对输入宗量x,y等计算函数f
在较长串中,找出短串的起始字符的下标 s是字符串则判“真”给出逻辑1
isletter(s) isspace(s) lasterr
以逻辑1指示s里文字符的位置 以逻辑1指示s里空格符的位置 MATLAB发出的最新错误信息
与字符串有关的另一个重要函数是eval,其调用格式为: eval(t) 其中t为字符串。它的作用是把字符串的内容作为对应 的MATLAB语句来执行。例如, t=pi; m=' [t,sin(t),cos(t)] '; y=eval(m) y= 3.1416 0.0000 -1.0000 综合例题:在MATLAB计算生成的图形上标出图名和最 大值点坐标。
单元数组(Cell Array)
单元数组的基本组分(Element)是单元(Cell ) (抽屉)。 每个单元本身在数组中是平等的,它们只能以 下标区分。 单元可以存放任何类型、任何大小的数组(如 任意维数值数组、字符串数组、符号对象等)。 而且,同一个单元数组中各单元中的内容可以 不同。 单元数组的维数不受限制;单元数组对单元的 编址方法也有单下标编址和全下标编址两种。
串操作函数(一)
指 令 blanks(n) char(s1,s2,…) deblank(s) eval(s) eval(s1,sc) 含 义 创建n个空格串 把串s1,s2等逐个写成行,形成多行数组 删去串尾部的空格符 把串s当作MATLAB指令运行 把串s1当作MATLAB指令运行。若s1运行发生错 误,则运行sc
结构数组(Structure Array)
结构数组:与单元数组一样,也能在一个数组 里存放各类数据。从一定意义上讲,结构(构 架)数组组织数据的能力比元胞数组更强、更 富于变化。 结构数组的基本组分是结构(Structure)。数 组中的每个结构是平等的,它们以下标区分。 结构必须在划分域(Fields,字段)后才能使 用。数据不能直接存放于结构,而只能存放在 域(字段)中。结构的域(字段)可存放任何 类型、任何大小的数组(如任意维数值数组、 字符串数组、符号对象等)。而且,不同结构 的同名域(字段)中存放的内容可以不同。 结构数组的维数不受限制。结构数组对结构的 编址方法也有单下标编址和全下标编址两种。
创建串数组 串数组的大小 串数组的元素标识 串数组的ASCII码 对字符串ASCII码数组的操作 中文字符串数组 创建带单引号的字符串 由小串构成长串
【例1】本例演示:串的基本属性、标识和简单操作。 (1)创建串数组 a='This is an example.' a= This is an example. (2)串数组a的大小 size(a) ans = 1 19 (3)串数组的元素标识 a14=a(1:4) %提出一个子字符串 ra=a(end:-1:1) %字符串的倒排 a14 = This ra = .elpmaxe na si sihT
数码下标:全下标、单下标 数码下标:全下标、单下标 如:A(1,2),即A(4) 如:B(1,2),即B(4) 任何类型(数值、字符、元 任何类型(数值、字符、单元、 胞、构架等及其他对象) 结构等及其他对象) 单元本身 如:单元A(1,2) 被标识的单元名 如:A(1,2) “花括号”标识的单元名 如:A{1,2} cell2struct把单元数组转换 为构架数组 “域(Field)” (字段) 如结构域B(1,2).f1 被标识的结构名 如:B(1,2) 带“域名”的标识结构名 如:B(1,2).f1 struct2cell把结构数组转换为单元 数组
字符串的对齐方式:或右对齐,或左对齐,或对中 逐行搜索串s2 ,给出以s1开头的那些行的行号
strncmp(s1,s2,n)
strrep(s1,s2,s3) strtok(s) strvcat(s1,s2,…)
若串s1,s2的前n个字符相同,则判“真”给出逻辑 1
串s1中的所有出现s2的地方替换为s3 找出第一个间隔符(空格、制表位、回车符)前的 内容 把串s1,s2等逐个写成行,形成多行数组
是MATLAB识别送来内容“身份”(是变量名、数字, 还是字符串)所必需的,字符串是以ASCII形式存储的。
数字标量在内存中存放时需要8个字节(Byte), 而一个字符的存放只需2个字节。
串数组的属性和标识 复杂串数组的创建 串转换函数 串操作函数
串数组的属性和标识
演示:串的基本属性、标识和简单操作。
单元数组的扩充
单元数组的扩充
利用cell指令创建单元数组 单元数组的“列”扩充和“行”扩充 cellplot能用图形形象化地表示单元数组的内 容。 celldisp显示单元数组的全部或部分内容 单元内编址(Content Addressing)方式也可 显示单元数组的全部或部分内容
单元数组的内容显示
百度文库
结构矩阵的建立与引用
结构矩阵的元素可以是不同的数据类型,它能将一 组具有不同属性的数据纳入到一个统一的变量名下 进行管理。建立一个结构矩阵可采用给结构成员赋 值的办法。具体格式为 结构矩阵名.成员名=表达式 其中表达式应理解为矩阵表达式。 例如,建立一个含有3个元素的结构矩阵a: a(1).x1=10;a(1).x2='liu';a(1).x3=[11,21;34,78]; a(2).x1=12;a(2).x2='wang';a(2).x3=[34,191;27,578]; a(3).x1=14;a(3).x2='cai';a(3).x3=[13,890;67,231];
增加一空格 使两行长度 相等
利用串操作函数创建多行串数组
用专门函数char , str2mat , strvcat创建多行串 数组示例。
Char: 创建字符传输组或将其他类型变量转化为字 符串数组 str2mat :将字符串转换为含有空格的数组 Strvcat:创建字符串数组
这三个函数创建多行数组时,不必担心每行字 符数是否相等。它们总会按最长行设置第二维 的长度,其他行的尾部用空格填充。
注意:结构矩阵元素的成员也可以是结构数据。
引用结构矩阵元素的成员时,显示其值; 引用结构矩阵元素时,显示成员名和它的值,但 成员是矩阵时,不显示具体内容,只显示成员矩 阵大小参数; 引用结构矩阵时,只显示结构矩阵大小参数和成 员名。
结构成员的修改
可以根据需要增加或删除结构的成员。例如要给结 构矩阵a增加一个成员x4,可给a中任意一个元素增 加成员x4: a(1).x4='410075'; 但其他成员均为空矩阵,可以使用赋值语句给它赋 确定的值。 要删除结构的成员,则可以使用rmfield函数来完成。 例如,删除成员x4: a=rmfield(a, 'x4');
复杂串数组的创建
多行串数组的直接创建 利用串操作函数创建多行串数组 转换函数产生数码字符串
多行串数组的直接创建
在直接创建多行串数组时,关键是要保 证同一串数组的各行字符数要相等,即 保证各行等长。为此,有时不得不通过 空格符的增减来调节各行的长度,使它 们彼此相等。 例: S=['This string array ' 'has multiple rows.']
稀疏矩阵
稀疏矩阵(Sparse Matrix):一个矩阵 中包含很多零元素。(只有很少数的非 零元素,一般只占矩阵总数的1%左右) 为避免对计算机资源的浪费,一般只存 储非零元素及与之相配的行号、列号。 稀疏矩阵在工程上的用途相当广泛,例 如电路、图学、有限元素法及偏微分方 程等。
结构数组与单元数组的异同比较
单元数组 举 例 基本组分(Element) 对基本组分的编址 可存放的数据类型 直接存放数据的场所 基本组分的寻访方式 具体内容的寻访方式 实现单元数组与结构 数组之间转换的指令 (3×4)单元数组A 单元(Cell) 结构数组 (3×4)结构数组B 它有名为f1,f2的两个域(字段) 结构(Structure)
串操作函数(二)
指 令 含 义
lower(s)
str2mat(s1,s2,…) strcat(s1,s2,…)
使s里的英文字母全部小写
把串s1,s2等逐个写成行,形成多行数组,并删出 全空行 把串s1,s2等连接成长串
strcmp(s1,s2)
strjust(s) strmatch(s1,s2)
若串s1,s2相同,则判“真”给出逻辑1
字符串数组 单元数组 结构数组 稀疏矩阵 关于数据类型的归纳性说明
字符串数组
字符串数组简称串数组。 字符串数组的作用:没有串数组及相应的操作, 那么数据可视化、图形用户界面GUI的制作将会 遇到困难,构作MATLAB的宏指令也将会遇到困 难。 字符变量的创建方式:在指令窗中,先把待建的 字符放在“单引号对”中,再按[Enter]键。 注意: “单引号对”必须在英文状态下输入,其作用
第三讲 字符串、单元 数组和结构数组
数组类型 基本组分 数值数组 元素
组分内涵 双精度实数标量 或双精度复数标量 字符 可以存放任何类型、 任何大小的数据。 只有挂接在结构上 的“域”才能存放 数据。数据可以是 任何类型、任何大 小。
字符串
单元数组 结构数组
元素
单元 结构
基本组分占 用字节数 8 16 2 不定 不定
dec2base 十进制整数转换为X进制串
dec2bin dec2hex double fprintf
num2str
把数值转换为串
把ASCII码翻译成串 以控制格式把数值转换为串 在控制格式下把串转换为数 值 把串转换为数值
十进制整数转换为二进制串 setstr 十进制整数转换为十六进制 sprintf 串 把任何类型数据转换成双精 sscanf 度数值 把格式化数据写到文件或屏 str2num 幕
转换函数产生数码字符串
最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。
int2str :将整数转换为字符串 num2str :把数值转换为字符串 mat2str:将数组转换为字符串
串转换函数
指 令 abs bin2dec char 含 义 把串翻译成ASCII码 指 令 hex2dec 含 义 16-进制串转换为十进制整数 把整数转换为串 把数值矩阵转换为eval可调用 的格式 base2dec X-进制串转换为十进制整数 hex2num 16-进制串转换为浮点数 二进制串转换为十进制整数 int2str 把ASCII码及其他非数值类 数据转换成字符串 mat2str
单元标识寻访和内容编址寻访的不同
对单元数组来说,单元和单元里的内容是两个不 同范畴的东西。因此,寻访单元和寻访单元中的 内容是两种不同的操作。 为此,MATLAB设计了两种不同的操作:
单元外标识(Cell Indexing) 单元内编址(Content Addressing) 例:
A(2,3):是指A单元数组中的第2行第3列单元元素; A{2,3}:是指A单元数组第2行第3列单元中所允许存或取的内 容; “外标识的单元元素”用的是“圆括号” “内编址单元元素内涵”用的是“花括号”
注意:两者的区别仅在于所用的括号不同。
单元数组的创建
外标识单元元素赋值法 编址单元元素内涵的直接赋值法 直接使用花括号{}将所有元素内容一次设定 完成
(4)串数组的ASCII码 ascii_a=double(a) %产生ASCII码 ascii_a =
Columns 1 through 19 84 104 105 115 32 105 115 32 97 110 32 101 120 97 109 112 108 101 46
char(ascii_a) %把ASCII码变回字符串 ans = This is an example. (5)对字符串ASCII码数组的操作 w=find(a>=‘a’&a<=‘z’); %找出串数组a中,小写字母的元素 位置 ascii_a(w)=ascii_a(w)-32; %大小写字母ASCII值差32,用数值 加法改变部分码值 char(ascii_a) %把新的ASCII码翻成字符 ans = THIS IS AN EXAMPLE.