实验三MATLAB字符串元胞和构架数组Word文档下载推荐.docx
- 文档编号:17919710
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:15
- 大小:32.96KB
实验三MATLAB字符串元胞和构架数组Word文档下载推荐.docx
《实验三MATLAB字符串元胞和构架数组Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验三MATLAB字符串元胞和构架数组Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
串的基本属性、标识和简单操作。
(1)
a='
Thisisanexample.'
(2)
size(a)
(3)
a14=a(1:
4)
ra=a(end:
-1:
1)
(4)
ascii_a=double(a)
char(ascii_a)
(5)
w=find(a>
='
a'
&
a<
z'
);
ascii_a(w)=ascii_a(w)-32;
(6)
A='
这是一个算例。
'
;
A_s=size(A)
A56=A([56])
ASCII_A=double(A)
char(ASCII_A)
(7)
Example'
3.1.2-1'
(8)
ab=[a(1:
7),'
'
b,'
.'
]
3.1.3复杂串数组的创建
3.1.3.1多行串数组的直接创建
【例3.1.3.1-1】多行串数组的直接输入示例。
S=['
Thisstringarray'
hasmultiplerows.'
size(S)
3.1.3.2利用串操作函数创建多行串数组
【例3.1.3.2-1】演示:
用专门函数char,str2mat,strvcat创建多行串数组示例。
S1=char('
Thisstringarray'
'
hastworows.'
)
S2=str2mat('
这'
字符'
串数组'
由4行组成'
S3=strvcat('
)
size(S3)
3.1.3.3转换函数产生数码字符串
【例3.1.3.3-1】最常用的数组/字符串转换函数int2str,num2str,mat2str示例。
A=eye(2,4);
A_str1=int2str(A)
rand('
state'
0)
B=rand(2,4);
B3=num2str(B,3)
B_str=mat2str(B,4)
Expression=['
exp(-'
B_str,'
)'
];
eval(Expression)
【例3.1.3.3-2】综合例题:
在MATLAB计算生成的图形上标出图名和最大值点坐标。
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'
)
holdon
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>
title(tit),xlabel('
t'
),ylabel('
y'
),holdoff
图3.1-1
3.1.3.4利用元胞数组创建复杂字符串
【例3.1.3.4-1】元胞数组在存放和操作字符串上的应用。
MATLAB6.x'
includesnewdatatypes:
c1='
◆Multidimensionalarray'
c2='
◆User-definabledatastructure'
c3='
◆Cellarrays'
c4='
◆Characterarray'
c5='
◆Functionhandle'
c=char(c1,c2,c3,c4,c5);
C={a;
b;
c};
%<
5>
disp([C{1:
2}])%<
6>
disp('
)%
disp(C{3})%<
3.1.4串转换函数
【例3.1.4-1】fprintf,sprintf,sscanf的用法示例。
0);
a=rand(2,2);
s1=num2str(a)
s_s=sprintf('
%.10e\n'
a)
fprintf('
%.5g\\'
s_sscan=sscanf(s_s,'
%f'
[3,2])
3.1.5串操作函数
3.2元胞数组
3.2.1元胞数组的创建和显示
3.2.1.1元胞标识寻访和内容编址寻访的不同
3.2.1.2元胞数组的创建和显示
【例3.2.1.2-1】本例演示:
元胞数组的创建。
C_str=char('
这是'
元胞数组创建算例1'
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)
3.2.2元胞数组的扩充、收缩和重组
【例3.2.2-1】元胞数组的扩充。
C=cell
(2);
C(:
1)={char('
Another'
textstring'
10:
1}
AC=[AC]
A_C=[A;
C]
【例3.2.2-2】cellplot能用图形形象化地表示元胞数组的内容。
(A_C取自上例)
cellplot(A_C,'
legend'
图3.2-1
【例3.2.2-3】元胞数组的收缩和重组。
A_C(3,:
)=[]
R_A_C=reshape(A_C,2,3)
3.2.3元胞数组内容的调取
【例3.2.3-1】元胞数组内容的调取示例。
f1=R_A_C(1,3)
class(f1)
f2=R_A_C{1,3}
class(f2)
f3=R_A_C{1,1}(:
[1256])
[f4,f5,f6]=deal(R_A_C{[1,3,4]})
3.2.4元胞数组转换函数
【例3.2.4-1】常用元胞数组转换函示例。
(1)num2cell把数值数组转换成元胞数组
A=rand(2,3,2)
C1=num2cell(A)
C2=num2cell(A,1)
C3=num2cell(A,[2,3])
(2)
clear,x=zeros(4,5);
x(:
)=1:
20
C4=mat2cell(x,[22],[32])
celldisp(C4)
D=cell2mat(C4(1,:
))
3.3构架数组
3.3.1构架数组的创建和显示
3.3.1.1直接创建法及显示
【例3.3.1.1-1】本例通过温室数据(包括温室名、容积、温度、湿度等)演示:
单构架的创建和显示。
green_house.name='
一号房'
1>
green_house.volume='
2000立方米'
%<
2>
green_house.parameter.temperature=[31.230.431.628.7
29.731.130.929.6];
%<
3>
green_house.parameter.humidity=[62.159.557.761.5
62.061.959.257.5];
%<
4>
(2)显示“单构架”结构和内容
green_house%<
green_house.parameter%<
green_house.parameter.temperature%<
【例3.3.1.1-2】本例演示构架数组的创建和显示,并利用构架数组保存一个温室群的数据。
本例的运行以例3.3.1.1-1为先导。
green_house(2,3).name='
六号房'
green_house%<
green_house(2,3)%<
3.3.1.2利用构造函数创建构架数组
【例3.3.1.2-1】利用构造函数struct,建立温室群的数据库。
a=cell(2,3);
green_house_1=struct('
name'
a,'
volume'
parameter'
a(1,2))%<
green_house_2=struct('
[],'
[])%<
green_hopuse_3(2,3)=struct('
[])%<
a1={'
};
a2={'
3200立方米'
green_house_4(2,3)=struct('
a1,'
a2,'
[]);
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
3.3.2构架数组域中内容的调取和设置
【例3.3.2-1】本例目的:
一,演示函数fieldnames,getfield,setfield的使用方法;
二,让读者感受到构架数组对应用工具包的影响;
三,演示struct函数把“对象”转换为构架的应用。
本例为获得一个演练的构架,借助Toolboxcontrol工具包中的tf函数,先产生一个用传递函数描写的LTI线性时不变2输入2输出系统
。
Stf=tf({3,2;
[41],1},{[132],[111];
[1221],[10]})
SSTF=struct(Stf)
FN=fieldnames(SSTF)
class(FN)
FC=getfield(SSTF,'
den'
{2,1})
FC{1}
poly2str(FC{1},'
s'
SSTF.num{2,1}
SSTF=setfield(SSTF,'
num'
{2,1},{[131]});
SSTF.num{2,1}
3.3.3构架数组操作深入
3.3.3.1构架数组的扩充和收缩
【例3.3.3.1-1】本例演示构架数组SSTF的扩充和收缩。
(本例以例3.3.2-1的运行为基础。
size(SSTF)
SSTF(2,2)=struct(tf(1,[11]))
SSTF(1,:
)=[]
S22n=SSTF(1,2).num,S22d=SSTF(1,2).den
printsys(S22n{1},S22d{1})
3.3.3.2增添域和删除域
【例3.3.3.2-1】对构架数组green_house进行域的增添和删减操作。
clear,fork=1:
department(k).number=['
No.'
int2str(k)];
end
department
department
(1).teacher=40;
department
(1).student=300;
department
(1).PC_computer=40;
department
(2).teacher.male=35;
department
(2).teacher.female=13;
D2T=department
(2).teacher%第2构架teacher域包含两个子域
D1T=department
(1).teacher%第1构架teacher域仅是一个数
department
(2).teacher=rmfield(department
(2).teacher,'
male'
department
(2).teacher
department=rmfield(department,'
student'
department=rmfield(department,{'
teacher'
PC_computer'
})
3.3.3.3数值运算操作和函数对构架数组的应用
【例3.3.3.3-1】数值运算操作和函数在构架域上的作用。
n_ex=5;
fork=1:
n_ex,ex(k).f=(k-1)*n_ex+[1:
5];
end
ex
disp([blanks(10)'
构架域中内容'
])
n_ex,disp(ex(k).f),end
class(ex
(1).f)
sum_f=zeros(1,5);
n_ex,sum_f=sum_f+ex(k).f;
end,sum_f
disp([blanks(20)'
ex.f的平方根值'
n_ex,disp(sqrt(ex(k).f)),end
3.3.4构架数组和元胞数组之间的转换
【例3.3.4-1】指令struct2cell和cell2struct的使用。
5,ex(k).s=['
int2str(k)];
ex(k).f=(k-1)*5+[1:
%s\n'
ex.s域的内容'
%s\'
blanks(4))
5;
%s\\'
[ex(k).sblanks
(1)]);
blanks
(1)),fprintf('
ex.f域的内容'
disp(ex(k).f);
C_ex=struct2cell(ex);
size(C_ex)
[C_ex{1,1,1},blanks(3)])
%5g\'
C_ex{2,1,1})
FS={'
S_char'
F_num'
EX1=cell2struct(C_ex,FS,1)
EX1
(1)
EX2=cell2struct(C_ex,'
xx'
2)
YY=strvcat('
y1'
y2'
y3'
y4'
y5'
EX3=cell2struct(C_ex,YY,3)
EX3
(1)
EX3
(2)
【例3.3.4-2】带子域的构架数组转换为元胞数组。
本例中的ex构架数组由例3.3.4-1生成,然后再运行以下程序。
ex(1,1).s
ex(1,1).s.sub='
SUB1'
ex(3,1).s.sub='
SUB3'
ex(3,1).s.num=1/3;
ex(3,1).s
C_ex_sub=struct2cell(ex)
size(C_ex_sub)
C_ex_sub{1,1,1}
C_ex_sub{1,3,1}
3.4关于数据类型的归纳性说明
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验三 MATLAB字符串元胞和构架数组 实验 MATLAB 字符串 构架 数组