实验三四MATLAB字符串元胞和构架数组.docx

上传人:b****8 文档编号:10059244 上传时间:2023-05-23 格式:DOCX 页数:16 大小:24.16KB
下载 相关 举报
实验三四MATLAB字符串元胞和构架数组.docx_第1页
第1页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第2页
第2页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第3页
第3页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第4页
第4页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第5页
第5页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第6页
第6页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第7页
第7页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第8页
第8页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第9页
第9页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第10页
第10页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第11页
第11页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第12页
第12页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第13页
第13页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第14页
第14页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第15页
第15页 / 共16页
实验三四MATLAB字符串元胞和构架数组.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验三四MATLAB字符串元胞和构架数组.docx

《实验三四MATLAB字符串元胞和构架数组.docx》由会员分享,可在线阅读,更多相关《实验三四MATLAB字符串元胞和构架数组.docx(16页珍藏版)》请在冰点文库上搜索。

实验三四MATLAB字符串元胞和构架数组.docx

实验三四MATLAB字符串元胞和构架数组

实验三(四)字符串数组、元胞数组和结构数组

一、实验目的

在复习并练习课堂教学内容的基础上,应掌握高级数据的各种运算,以及运算中常用到的函数的用法。

二、实验内容:

1字符串数组及其运算;

2元胞数组及其运算;

3结构数组及其运算;

三、实验与练习内容

数值数组、字符串数组(CharacterStringArray)、元胞数组(Cellarray)和结构数组(Structurearray)。

它们之间的基本差别见表1。

表1四种数据类型基本构成比较表

数组类型

基本组分

组分内涵

基本组分占用字节数

数值数组

数值

双精度实数标量

或双精度复数标量

8

16

字符串数组

字符

任意字符

2

元胞数组

元胞

可以存放任何类型、任何大小的数据

不定

结构数组

结构

只有挂接在结构上的“域”才能存放数据。

数据可以是任何类型、任何大小。

不定

1.字符串数组

1.1字符串入门

【练习】先请实际操作本例,以体会数值量与字符串的区别。

clear

a=12345.6789

class(a)

ans=

double

a_s=size(a)

a_s=

11

b='S'

class(b)

ans=

char

b_s=size(b)

b_s=

11

whos

NameSizeBytesClass

a1x18doublearray

a_s1x216doublearray

ans1x48chararray

b1x12chararray

b_s1x216doublearray

Grandtotalis10elementsusing50bytes

1.2串数组的属性和标识

【练习】串的基本属性、标识和简单操作。

(1)a='Thisisanexample.'

(2)size(a)ans=

119

(3)a14=a(1:

4)

ra=a(end:

-1:

1)

a14=this

ra=.elpmaxenasisiht

(4)ascii_a=double(a)

char(ascii_a)

ascii_a=

Columns1through8

1161041051153210511532

Columns9through16

971103210112097109112

Columns17through19

10810146

ans=thisisanexample.

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

w=

Columns1through8

123467910

Columns9through15

12131415161718

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

(6)A='这是一个算例。

';

A_s=size(A)

A56=A([56])

ASCII_A=double(A)

char(ASCII_A)

A_s=size(A)

A56=A([56])

ASCII_A=double(A)

char(ASCII_A)

A_s=

17

A56=

算例

ASCII_A=Columns1through4

54754519115394747350

Columns5through7

521954940541379

ans=

这是一个算例。

(7)b='Example''3.1.2-1'''

(8)ab=[a(1:

7),'',b,'.']

ab=

thisisExample'3.1.2-1'

1.3复杂串数组的创建

1.3.1多行串数组的直接创建

【练习】多行串数组的直接输入。

clear

S=['Thisstringarray'

'hasmultiplerows.']

size(S)

ans=

218

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

【练习】用专门函数char,str2mat,strvcat创建多行串数组。

S1=char('Thisstringarray','hastworows.')

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

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

size(S3)

1.3.3转换函数产生数码字符串

【练习】最常用的数组/字符串转换函数int2str,num2str,mat2str。

(1)A=eye(2,4);

A_str1=int2str(A)

A_str1=

1000

0100

(2)rand('state',0)

B=rand(2,4);

B3=num2str(B,3)

B3=

0.950.6070.8910.456

0.2310.4860.7620.0185

(3)B_str=mat2str(B,4)

Expression=['exp(-',B_str,')'];

eval(Expression)

B_str=

[0.95010.60680.89130.4565;0.23110.4860.76210.0185]

ans=

0.38670.54510.41010.6335

0.79370.61510.46670.9817

1.3.4利用元胞数组创建复杂字符串

【练习】元胞数组在存放和操作字符串上的应用。

a='MATLAB6.x';

b='includesnewdatatypes:

';

c1='◆Multidimensionalarray';

c2='◆User-definabledatastructure';

c3='◆Cellarrays';

c4='◆Characterarray';

c5='◆Functionhandle';

c=char(c1,c2,c3,c4,c5);

c=

◆Multidimensionalarray

◆User-definabledatastructure

◆Cellarrays

◆Characterarray

◆Functionhandle

C={a;b;c};

C=

'MATLAB6.x'

'includesnewdatatypes:

'

[5x30char]

disp([C{1:

2}])

MATLAB6.xincludesnewdatatypes:

disp('')

disp(C{3})

◆Multidimensionalarray

◆User-definabledatastructure

◆Cellarrays

◆Characterarray

◆Functionhandle

1.4串转换函数

【练习】fprintf,sprintf,sscanf的用法。

rand('state',0);

a=rand(2,2);

s1=num2str(a)

s_s=sprintf('%.10e\n',a)

fprintf('%.5g\\',a)

s_sscan=sscanf(s_s,'%f',[3,2])

s1=

0.950130.60684

0.231140.48598

s_s=

9.5012928515e-001

2.3113851357e-001

6.0684258354e-001

4.8598246871e-001

0.95013\0.23114\0.60684\0.48598\

s_sscan=

0.95010.4860

0.23110

0.60680

2元胞数组

2.1元胞数组的创建和显示

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

2.1.2元胞数组的创建和显示

C_str=char

R=reshape(1:

9,3,3);

Cn=[1+2i];

S_sym=sym('sin(-3*t)*exp(-t)');

(1)直接创建法之一

A(1,1)={C_str};A(1,2)={R};A(2,1)={Cn};A(2,2)={S_sym};

A

(2)直接创建法之二

B{1,1}=C_str;B{1,2}=R;B{2,1}=Cn;B{2,2}=S_sym;

celldisp(B)

2.2元胞数组的扩充、收缩和重组

【练习】元胞数组的扩充。

(1)C=cell

(2);

C(:

1)={char('Another','textstring');10:

-1:

1}

C=

[2x11char][]

[1x10double][]

(2)AC=[AC]

A_C=[A;C]

【练习】cellplot能用图形形象化地表示元胞数组的内容。

(A_C取自上例)

cellplot(A_C,'legend')

【练习】元胞数组的收缩和重组。

(1)A_C(3,:

)=[]

(2)R_A_C=reshape(A_C,2,3)

2.3元胞数组内容的调取

【练习】元胞数组内容的调取。

(1)f1=R_A_C(1,3)

class(f1)

(2)f2=R_A_C{1,3}

class(f2)

(3)f3=R_A_C{1,1}(:

[1256])

(4)[f4,f5,f6]=deal(R_A_C{[1,3,4]})

2.4元胞数组转换函数

【练习】常用元胞数组转换函数。

(1)num2cell把数值数组转换成元胞数组

rand('state',0);

A=rand(2,3,2)

C1=num2cell(A)

C2=num2cell(A,1)

C3=num2cell(A,[2,3])

A(:

:

1)=

0.95010.60680.8913

0.23110.48600.7621

A(:

:

2)=

0.45650.82140.6154

0.01850.44470.7919

C1(:

:

1)=

[0.9501][0.6068][0.8913]

[0.2311][0.4860][0.7621]

C1(:

:

2)=

[0.4565][0.8214][0.6154]

[0.0185][0.4447][0.7919]

C2(:

:

1)=

[2x1double][2x1double][2x1double]

C2(:

:

2)=

[2x1double][2x1double][2x1double]

C3=

[1x3x2double]

[1x3x2double]

用函数size和命令whos来查验

whos

NameSizeBytesClass

A2x3x296doublearray

A561x24chararray

ASCII_A1x756doublearray

A_s1x216doublearray

A_str12x1040chararray

B2x464doublearray

B32x35140chararray

B_str1x56112chararray

C2x2252cellarray

C12x3x2816cellarray

C21x3x2456cellarray

C32x1216cellarray

C_str0x00chararray

Cn1x116doublearray(complex)

Expression1x62124chararray

R3x372doublearray

S2x1872chararray

S12x1768chararray

S_sym1x1158symobject

a2x232doublearray

a141x48chararray

a_s1x216doublearray

ab1x2856chararray

ans2x464doublearray

ascii_a1x19152doublearray

b1x2448chararray

b_s1x216doublearray

c5x30300chararray

c11x2346chararray

c21x3060chararray

c31x1224chararray

c41x1632chararray

c51x1632chararray

ra1x1938chararray

s12x1976chararray

s_s1x72144chararray

s_sscan3x248doublearray

w1x15120doublearray

Grandtotalis917elementsusing4090bytes

size(A)

ans=

232

>>size(C1)

ans=

232

>>size(C2)

ans=

132

>>size(C3)

ans=

21

(2)clear,x=zeros(4,5);

x(:

)=1:

20

C4=mat2cell(x,[22],[32])

celldisp(C4)

x=

1591317

26101418

37111519

48121620

C4=

[2x3double][2x2double]

[2x3double][2x2double]

C4{1,1}=

159

2610

C4{2,1}=

3711

4812

C4{1,2}=

1317

1418

C4{2,2}=

1519

1620

(3)D=cell2mat(C4(1,:

))

D=

1591317

26101418

3结构数组

3.1构架数组的创建和显示

3.2直接创建法及显示

【练习】通过温室数据(包括温室名、容积、温度、湿度等)演示:

单构架的创建和显示。

(1)green_house.name='一号房';

green_house.volume='2000立方米';

green_house.parameter.temperature=[31.230.431.628.7…

29.731.130.929.6];

green_house.parameter.humidity=[62.159.557.761.5…

62.061.959.257.5];

(2)显示“单构架”结构和内容

green_house

green_house.parameter

green_house.parameter.temperature%

【练习】构架数组的创建和显示,并利用构架数组保存一个温室群的数据。

下面的运行以上述练习为先导。

(1)green_house(2,3).name='六号房';

(2)green_house

green_house(2,3)

3.3利用构造函数创建构架数组

【练习】利用构造函数struct,建立温室群的数据库。

(1)a=cell(2,3);

green_house_1=struct('name',a,'volume',a,'parameter',a(1,2))

(2)green_house_2=struct('name',a,'volume',[],'parameter',[])

(3)green_hopuse_3(2,3)=struct('name',[],'volume',[],'parameter',[])

(4)a1={'六号房'};a2={'3200立方米'};

green_house_4(2,3)=struct('name',a1,'volume',a2,'parameter',[]);

T6=[31.2,30.4,31.6,28.7;29.7,31.1,30.9,29.6];

green_house_4(2,3).parameter.temperature=T6;

green_house_4

 

四、实验报告

通过这次试验,我知道矩阵只能存放若干单一类型的数据,且不能存放矩阵(即矩阵元素不能是矩阵),也就是说矩阵只适合同时处理若干相同类型的数据。

 Matlab编程有时需要突破这种局限,同时处理不同类型的数据,或者处理更高层面的数据时需要把若干矩阵作为“元素”整体处理(当然,如果是同样大小的若干矩阵可以采用高一维的矩阵),就需要元胞数组了。

做个比喻的话,元胞数组就好比“橱柜”,由若干个“抽屉”构成,每个“抽屉”里可以存放任何“东西”(数据类型,包括矩阵)。

这为Matlab编程提供了极大的方便性和灵活性。

  

 

 

成绩:

实验日期和地点:

东港学院

指导教师:

宁伟

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 理化生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2