2.6 Matlab学习笔记之数据与运算-字符串

Matlab字符串

在实际应用中,有两种基本的数据类型,一个是数值型数据,一个是字符型数据或称字符串数据。

数值型数据是指能参与数值运算的数据,又分为整型、浮点型和复数型。

字符型数据在日常应用中则不太强调,但却是大量存在的。

一、字符串的表示

在MATLAB中,字符串是用单引号括起来的字符序列。若字符串中的字符含有单引号,则该单引号字符要用两个单引号来表示。例如:

>> 'I''m  a  teacher.'

ans =

I'm  a  teacher.

MATLAB 将一个字符串当作一个行向量,每个元素对应一个字符,其引用方法和数值向量相同。例如:

>>A='ABCDEF';

>>A(1:3) 

ans =

ABC

也可以建立多行字符串,形成字符串矩阵。例如:

>> ch=['abcdef';'123456'];
>> ch(2,3) 

ans =

3

这里要求各行字符数要相等。为此,有时不得不用空格来调节各行的长度,使它们彼此相等

例1 建立一个字符串向量,然后对该向量做如下处理。

(1)取第1~5个字符组成的子字符串。

(2)将字符串倒过来重新排列。

(3)将字符串中的小写字母变成相应的大写字母,其余字符不变。

(4)统计字符串中小写字母的个数。

>> ch='ABc123d4e56Fg9'

ch =

ABc123d4e56Fg9

>> subch=ch(1:5)

subch =

ABc12

>> revch=ch(end:-1:1)

revch =

9gF65e4d321cBA

>> k=find(ch>='a'&ch<='z')

k =

     3     7     9    13

>> ch(k)=ch(k)-('a'-'A')

ch =

ABC123D4E56FG9

>> length(k)

ans =

     4

二、字符串的操作
1.字符串的执行

与字符串有关的一个重要函数是 eval, 它的作用是把字符串的内容作为对应的 MATLAB命令来执行,其调用格式如下:

eval(s),

其中s 为字符串。

>> t=pi;
>> m='[t,sin(t),cos(t)]'; 
>> y=eval(m)

y =

    3.1416    0.0000   -1.0000
2.字符串与数值之间的转换

字符串是以ASCII 码形式存储的, abs 和 double 函数都可以用来获取字符串矩阵所对应的 ASCII 码数值矩阵。相反, char 函数可以把ASCII 码矩阵转换为字符串矩阵。

>> s1='MATLAB';
>> a=abs(s1)

a =

    77    65    84    76    65    66

>> char(a+32)

ans =

matlab

MATLAB 还有许多用于字符串和数值数据之间转换的函数

  • setstr 函数将ASCII码值转换成对应的字符

  • str2num 函数或 str2double 函数将数字字符串转换成数值

  • num2str 函数将数值转换成字符串

  • int2str 函数将整数转换成字符串

3.字符串的连接

在 MATLAB 中,要将两个字符串连接在一起,有两种常见方法: 一是用字符串向量,二是用strcat 函数

用字符串向量可以将若干个字符串连接起来,即用中括号将若干个字符串括起来,从而得到 一个更长的字符串。

>> f=70;
>> c=(f-32)/1.8;
>> ['Room temperature is ',num2str(c),' degrees C.']

ans =

Room temperature is 21.1111 degrees C.

strcat函数可以将若干个字符串连接起来。

>> strcat('ss','ff','DD','1234')

ans =

ssffDD1234
4.字符串的比较

字符串的比较有两种方法:利用关系运算符或字符串比较函数

当两个字符串拥有相同的长度时,可以利用关系运算符对字符串进行比较,比较的规则是按ASCII 值大小逐个字符进行比较,比较的结果是一个数值向量,其元素为对应字符比较的结果。

>> 'www0'>='W123'

ans =

     1     1     1     0

字符串比较函数用于判断字符串是否相等,有4种比较方式,函数如下。

(1)strcmp(s1,s2): 用来比较字符串s1和s2是否相等,如果相等,返回1,否则返回0。

(2)strncmp(s1,s2,n): 用来比较前n个字符是否相等,如果相等,返回1,否则返回0。

(3)strcmpi(s1,s2): 在忽略字母大小写前提下,比较字符串s1 和 s2 是否相等,如果相等, 返回1,否则返回0。

(4)strncmpi(s1,s2,n): 在忽略字符串大小写前提下,比较前n 个字符是否相等,如果相等, 返回1,否则返回0。

>> strcmp('wwwO','W123') 

ans =

     0

>> strncmpi('wwwO','W123',1)

ans =

     1
5.字符串的查找与替换

MATLAB 提供了许多函数,用来对字符串中的字符进行查找与替换。常用的有以下两个。

(1)findstr(s1,s2): 返回短字符串在长字符串中的开始位置。

>> p=findstr('This is a test!','is')

p =

     3     6

(2)strrep(s1,s2,s3): 将字符串s1 中的所有子字符串s2 替换为字符串s3。

>> result =strrep('This is a test!','test','class')

result =

This is a class!

Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值