MATLAB实验上机所用word(字符串及其运算篇)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章字符串、元胞和构架数组与

符号计算

MATLAB 6.x版的内建数据类型(Built-in data type)就有5种以上,此外还有许多其他专门设计的类(Class),如符号类、内联函数类、控制工具包中的线性时不变模型类、神经网络类等。就程序设计而言,MATLAB 6.x版采用了面向对象编程技术。数据和编程的改变使用户能更简捷而自然地解决复杂的计算问题(如符号计算问题、多变量控制系统问题、神经网络问题)。本章内容根据MATLAB6.5编写,但绝大部分内容适用于其他MATLAB6.x版本。

4.1字符串数组

4.1.1字符串入门

字符变量的创建方式是:在指令窗中,先把待建的字符方在“单引号对中,再按’Enter‘。注意单引号对必须在英文状态输入。

【例3.1.1-1】先请读者实际操作本例,以体会数值量与字符串的区别。

clear

a=12345.6789

class(a)

a_s=size(a)

b='S'

class(b)

b_s=size(b)

4.1.2串数组的属性和标识

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

(1)创建一个由19个字符组成的串,这19个字符必须被放在但引号对内。

a='This is an example.'

(2)串数组的大小

在以上赋值后,变量就是一个串数组。该串的每个字符(英文字母、空格和标点都是平等的)占据一个元素位。串数组的大小可以通过下面指令获得。

size(a)

(3)串数组的元素标识

在一维串数组中,matlab按自左至右的次序用自然数数码标识字符的位置。

a14=a(1:4) %提出一个字数串

ra=a(end:-1:1) %字符串的倒排

(4)串数组的ASCII码

字符串的存储是用ASCII码实现的,指令double、abs都可以用来获取串数组对应的ASCII码数值数组,指令char可以把ASCII数组变为串数组。

ca=double(a)

char(ca)

note: 1、在char把数字转换为字符时,负数将导致“警告”;非整数部分将被截尾。2、中文字符能被char和double正确转换。

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

由于ASCII码是数值数组,所以各种数值运算、函数和操作对ASCII数组都适用。

w=find(a>='a'&a<='z'); %找出串数组中小写字母的元素位置

ascii_a(w)=ascii_a(w)-32; %大小写字母ASCII值差32。

char(ascii_a)

(6)中文字符串数组

中文字符创建时一定要特别注意,字符外面的单引号对必须在英文状态下输入。与英文文字字符情况一样,每个中文字符也是占一个元素位置。但是中文ASCII值大于256。A='这是一个算例。';

A_s=size(A) %串数组的大小

A56=A([5 6]) %取串的子数组。

ASCII_A=double(A) %获取ASCII码

char(ASCII_A) %ASCII翻译成字符

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

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

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

(8)有小串构成长串

ab=[a(1:7),' ',b,' .'] %第2 个输入为空格串

ab =

This is Example '3.1.2-1' .

4.1.3复杂串数组的创建

4.1.3.1多行串数组的直接创建

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

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

【例4.1.3.1-1】多行串数组的直接输入示例。

clear

S=['This string array ' %第一行在末尾添加空格保证以第二行等长。

'has multiple rows.']

size(S)

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

【例3.1.3.2-1】演示:用专门函数char 创建多行串数组示例。

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

S1 =

This string array

has two rows.

4.1.3.2转换函数产生数码

..字符串

【例4.1.3.1-1】最常用的数组/字符串转换函数int2str , num2str , mat2str 示例。

(1)int2str把整数数组转换成串数组(非整数将被四舍五入圆整后再转换)

A=eye(2,4);

A_str1=int2str(A)

size(A_str1)

(2)num2str把非整数数组转换成为串数组(常用于图形中,数据点的标识)

rand('state',0)

B=rand(2,4);

B3=num2str(B,3)

【例4.1.3.1-2】综合例题:在MATLAB计算生成的图形上标出图名和最大值点坐标。clear

a=2; %设置衰减系数

w=3; %设置振荡频率

t=0:0.01:10;

y=exp(-a*t).*sin(w*t); %产生函数数组

[y_max,i_max]=max(y); %找最大值元素位置

t_text=['t=',num2str(t(i_max))]; % <7> 生成最大值点的横坐标字符串y_text=['y=',num2str(y_max)]; % <8>生成最大值点的纵坐标字符串max_text=char('maximum',t_text,y_text); % <9>生成标志图名用的字符串%

tit=['y=exp(-',num2str(a),'t)*sin(',num2str(w),'t)']; %<11> plot(t,zeros(size(t)),'k') %画纵坐标为0的基准线

hold on

plot(t,y,'b')

plot(t(i_max),y_max,'r.','MarkerSize',20) %用大红点标最大值text(t(i_max)+0.3,y_max+0.05,max_text) % <16>再图上书写最大值点的数据值

note:本例第7、8句是num2str指令的一种典型运用。由这种方式组成的字符串的特点是:由数值转换而得的那部分字符时可以随计算所产生的数据而变。

4.2元胞数组

许多大银行都有一个管理十分完善的保险箱库。保险箱库的最小单位是箱柜,它可以存放任何东西(如珠宝、债券、现金、文件等)。每个箱柜被编号,一个个编号的箱柜组合成排,一排排编号的箱柜组合成室,一个个编号的柜便组合成银行的保险库。元胞数组(cell array)如同银行的保险箱柜一样,该数组的基本组分(element)是元胞。每个元胞本身在数组中是平等的。他们只能以下标区分。元胞可以存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,同一个元胞数组中各元胞中的内容可以不同。

与数值数组一样,元胞数组维数不受限制,可以一维,二维或更高维,不过一维元胞数组用的最多。元胞数组对元胞的编址方法也有单下标和全下标编址两种

4.2.1元胞数组的创建和显示

1、元胞标识寻访和内容编址寻访的不同

无论在数值数组中,还是在字符串数组里,由于同一数组各元素的数据类型都相同,因此对元素的寻访也就是直接了当的。比如对于二维数组A来说,A(2,3)就表示数组A

相关文档
最新文档