admin 管理员组

文章数量: 887021


2024年2月19日发(作者:ac output是什么意思)

第三章(教材附录A) 字符串数组

字符串数组(以下简称串数组),在MATLAB中的重要性较小,但不可缺少。假如没有串数组及相应的操作,那么数据可视化、图形用户界面GUI的制作将会遇到困难。

3.1字符串的创建

字符串与数值是两种不同的数据类(Class),它们的创建方式不同。数值变量是通过在指令窗中数字赋值创建的。

字符变量的创建方式是:

在指令窗中,先把待建的字符放在“单引号对”中,再按[Enter]键。注意:“单引号对”必须在英文状态下输入!

数值标量在内存中存放时需要8个字节(Byte),而一个字符的存放只需2个字节。

3.1字符串的属性与标识

【例3.1-2】本例演示:串的基本属性、标识和简单操作。

(1)创建串数组

a='This is an example.'

(2)串数组的大小

size(a)

(3)串数组a的元素标识

a14=a(1:4)

ra=a(end:-1:1)

(4)串数组的ASCII码

ascii_a=double(a)

char(ascii_a)

[说明]

 中文字符能被char和double正确转换。

(5)对字符串 ASCII码数组的操作

w=find(a>='a'&a<='z');

ascii_a(w)=ascii_a(w)-32;

char(ascii_a)

(6)中文字符串数组

A='这是一个算例。';

A_s=size(A)

A56=A([5 6])

ASCII_A=double(A)

char(ASCII_A) %把ASCII 码 翻译成字符这是一个算例。

(7)创建带单引号的字符串

当串中文字包含(英文)单引号时,每个单引号符用“连续的2个单引号符”表示。

b='Example ''3.1.2-1'''

(8)由小串构成长串

ab=[a(1:7),' ',b,' .']

复杂串数组的创建

一、多行串数组的直接创建

在直接创建多行串数组时,关键是要保证同一串数组的各行字符数要相等,即保证各行等长。为此,有时不得不通过空格符的增减来调节各行的长度,使它们彼此相等。

二、利用串操作函数创建多行串数组

【例3.1-4】演示:用专门函数char , str2mat , strvcat创建多行串数组。

S1=char('This string array','has two rows.')

S2=str2mat('这','字符','串数组','由4行组成')

S3=strvcat('这','字符','串数组',' ','由4行组成')

size(S3)

[说明]

这三个函数创建多串数组时,不必担心每行字符数是否相等。它们总会按最长行设置第二维的长度,其他行的尾部用空格填充。

3.2 串转换函数

指令

abs

含义

把串翻译成ASCII码

指令

hex2dec

含义

16-进制串转换为十进制整数

base2dec

X-进制串转换为十进制整数

bin2dec

char

换成字符串

dec2base

十进制整数转换为X进制串

dec2bin

dec2hex

double

fprintf

十进制整数转换为二进制串

十进制整数转换为16进制串

把任何类数据转还成双精度数值

把格式化数据写到文件或屏幕

二进制串转换为十进制整数

把ASCII码及其他非数值类数据转hex2num

16-进制串转换为浮点数

int2str

mat2str

的格式

num2str

setstr

sprintf

sscanf

str2num

把数值转换为串

把ASCII码翻译成串

以控制格式把数值转换成串

在格式控制下把串转换为数

把串转换为数值

把整数转换为串

把数值矩阵转换为eval可调用

3.3 串操作函数

指令

blanks(n)

char(s1,s2,…)

deblank(s)

eval(s)

含义

创建n个空格串

指令

lower(s)

含义

把s里的英文字母全部小写

把串s1,s2等逐个写成行,形成多行数组,并删除全空行

把串s1,s2等连接成长串

若串s1,s2相同,则判“真”给出逻辑1

字符串的对齐方式:或右对齐,或左对齐,或对中

逐行搜索串s2,给出以s1开头的那些行的行号

把串s1,s2等逐个写成行,str2mat(s1,s2,…)

形成多行数组

删去串尾部的空格符

strcat(s1,s2,…)

把串s当作MATLAB指令strcmp(s)

运行

把串s1当作MATLAB指令运行。若s1 运行发生错误,strjust(s)

则运行sc

x,

对输入宗量x,y等计算函数strmatch(s1,s2)

f

eval(s1,sc)

feval(f,

y,....)

findstr(s1,s2)

ischar(s)

isletter(s)

isspace(s)

lasterr

在较长串中,找到短串的起若串s1,s2的前n个字符相strncmp(s1,s2,s3)

始字符的下标 同,则判“真”给出逻辑1

s是字符串,则判“真”给strrep(s1,s2,s3)

出逻辑1

以逻辑1指示s里文字符的strtok(s)

位置

以逻辑1指示s里空格符的strvcat(s1,s2,…)

位置

MATLAB发出的最新错误upper(s)

信息

串s1中的所以出现s2的地方替换为s3

找出第一个间隔符(空格、制表位、回车符)前的内容

把串s1,s2等逐个写成行,形成多行数组

使s里的英文字母全部大写


本文标签: 数组 转换 创建 字符 数值