MATLAB字符串数组Word文件下载.docx
《MATLAB字符串数组Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB字符串数组Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
1209710911210810146
char(ascii_a)
w=find(a>
='
a'
&
a<
z'
);
ascii_a(w)=ascii_a(w)-32;
char(ascii_a)
THISISANEXAMPLE.
A='
这是一个算例。
'
;
A_s=size(A)
A56=A([56])
ASCII_A=double(A)
A_s=
17
A56=
算例
ASCII_A=
Columns1through6
547545191153947473505219549405
Column7
41379
char(ASCII_A)
Example'
3.1.2-1'
ab=[a(1:
7),'
'
b,'
.'
]
ab=
ThisisExample'
.
.1.3复杂串数组的创建
10一多行串数组的直接创建
【例3.1-3】多行串数组的直接输入示例。
clear
S=['
Thisstringarray'
hasmultiplerows.'
]
S=
Thisstringarray
hasmultiplerows.
size(S)
218
10二利用串操作函数创建多行串数组
【例3.1-4】演示:
用专门函数char,str2mat,strvcat创建多行串数组示例。
S1=char('
Thisstringarray'
'
hastworows.'
)
S1=
Thisstringarray
hastworows.
S2=str2mat('
这'
字符'
串数组'
由4行组成'
S2=
这
字符
串数组
由4行组成
S3=strvcat('
)
S3=
size(S3)
55
10三转换函数产生数码字符串
【例3.1-5】最常用的数组/字符串转换函数int2str,num2str,mat2str示例。
A=eye(2,4);
A_str1=int2str(A)
A_str1=
1000
0100
rand('
state'
0)
B=rand(2,4);
B3=num2str(B,3)
B3=
0.950.6070.8910.456
0.2310.4860.7620.0185
B_str=mat2str(B,4)
B_str=
[0.95010.60680.89130.4565;
0.23110.4860.76210.0185]
Expression=['
exp(-'
B_str,'
)'
];
eval(Expression)
0.38670.54510.41010.6335
0.79370.61510.46670.9817
【例3.1-6】综合例题:
在MATLAB计算生成的图形上标出图名和最大值点坐标。
(见图3.1-1)
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))];
y_text=['
y='
num2str(y_max)];
max_text=char('
maximum'
t_text,y_text);
tit=['
y=exp(-'
num2str(a),'
t)*sin('
num2str(w),'
t)'
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)
title(tit),xlabel('
t'
),ylabel('
y'
),holdoff
图3.1-1字符串运用示意图
.1.4串转换函数
【例3.1-7】fprintf,sprintf,sscanf的用法示例。
0);
a=rand(2,2);
s1=num2str(a)
s_s=sprintf('
%.10e\n'
a)
s1=
0.950130.60684
0.231140.48598
s_s=
9.5012928515e-001
2.3113851357e-001
6.0684258354e-001
4.8598246871e-001
fprintf('
%.5g\\'
0.95013\0.23114\0.60684\0.48598\
s_sscan=sscanf(s_s,'
%f'
[3,2])
s_sscan=
0.95010.4860
0.23110
0.60680
.1.5串操作函数
.2元胞数组
.2.1元胞数组的创建和显示
10一元胞标识寻访和内容编址寻访的不同
10二元胞数组的创建和显示
【例3.2-1】本例演示:
元胞数组的创建。
C_str=char('
这是'
元胞数组创建算例1'
R=reshape(1:
9,3,3);
Cn=[1+2i];
S_sym=sym('
sin(-3*t)*exp(-t)'
A(1,1)={C_str};
A(1,2)={R};
A(2,1)={Cn};
A(2,2)={S_sym};
A
A=
[2x10char][3x3double]
[1.0000+2.0000i][1x1sym]
B{1,1}=C_str;
B{1,2}=R;
B{2,1}=Cn;
B{2,2}=S_sym;
celldisp(B)
B{1,1}=
这是
元胞数组创建算例1
B{2,1}=
1.0000+2.0000i
B{1,2}=
147
258
369
B{2,2}=
-sin(3*t)*exp(-t)
【例3.2-2】元胞数组在存放和操作字符串上的应用。
MATLAB5'
introducesnewdatatypes:
c1='
◆Multidimensionalarray'
c2='
◆User-definabledatastructure'
c3='
◆Cellarrays'
c4='
◆Characterarray'
c=char(c1,c2,c3,c4);
C={a;
b;
c};
disp([C{1:
2}])
disp('
)
disp(C{3})
MATLAB5introducesnewdatatypes:
◆Multidimensionalarray
◆User-definabledatastructure
◆Cellarrays
◆Characterarray
.2.2元胞数组的扩充、收缩和重组
【例3.2-3】元胞数组的扩充。
C=cell
(2);
C(:
1)={char('
Another'
textstring'
10:
1}
C=
[2x11char][]
[1x10double][]
AC=[AC]
A_C=[A;
C]
AC=
[2x10char][3x3double][2x11char][]
[1.0000+2.0000i][1x1sym][1x10double][]
A_C=
[2x10char][3x3double]
[1.0000+2.0000i][1x1sym]
【例3.2-4】cellplot能用图形(图3.2-1)形象化地表示元胞数组的内容。
(A_C取自上例)
cellplot(A_C,'
legend'
图3.2-1元胞数组A_C的形象化结构图
【例3.2-5】元胞数组的收缩和重组。
A_C(3,:
)=[]
R_A_C=reshape(A_C,2,3)
R_A_C=
[2x10char][1x10double][1x1sym]
[1.0000+2.0000i][3x3double][]
.2.3元胞数组内容的调取
【例3.2-6】元胞数组内容的调取示例。
f1=R_A_C(1,3)
class(f1)
f1=
[1x1sym]
cell
f2=R_A_C{1,3}
class(f2)
f2=
sin(-3*t)*exp(-t)
sym
f3=R_A_C{1,1}(:
[1256])
f3=
元胞创建
[f4,f5,f6]=deal(R_A_C{[1,3,4]})
f4=
f5=
10987654321
f6=
369
.3构架数组
.3.1构架数组的直接创建法及显示
【例3.3-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];
green_house
green_house=
name:
volume:
parameter:
[1x1struct]
green_house.parameter
ans=
temperature:
[2x4double]
humidity:
[2x4double]
green_house.parameter.temperature
31.200030.400031.600028.7000
29.700031.100030.900029.6000
【例3.3-2】本例演示构架数组的创建和显示,并利用构架数组保存一个温室群的数据。
本例的运行以例3.3.1-1为先导。
green_house(2,3).name='
六号房'
2x3structarraywithfields:
name
volume
parameter
green_house(2,3)
[]
[]
.3.2利用构造函数创建构架数组
【例3.3-3】利用构造函数struct,建立温室群的数据库。
a=cell(2,3);
green_house_1=struct('
name'
a,'
volume'
parameter'
a(1,2))
green_house_1=
green_house_2=struct('
[],'
[])
green_house_2=
parameter
green_hopuse_3(2,3)=struct('
green_hopuse_3=
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数值运算操作和函数对构架数组的应用
【例3.3-4】数值运算操作和函数在构架域上的作用。
n_ex=5;
fork=1:
n_ex,ex(k).f=(k-1)*n_ex+[1:
5];
end
ex
ex=
1x5structarraywithfields:
f
disp([blanks(10)'
构架域中内容'
])
n_ex,disp(ex(k).f),end
构架域中内容
12345
678910
1112131415
1617181920
2122232425
class(ex
(1).f)
double
sum_f=zeros(1,5)
n_ex,sum_f=sum_f+ex(k).f;
end,sum_f
sum_f=
5560657075
disp([blanks(20)'
ex.f的平方根值'
n_ex,disp(sqrt(ex(k).f)),end
ex.f的平方根值
1.00001.41421.73212.00002.2361
2.44952.64582.82843.00003.1623
3.31663.46413.60563.74173.8730
4.00004.12314.24264.35894.4721
4.58264.69044.79584.89905.0000
.4关于数据类型的归纳性说明
习题3
4.1字符串数组
4.1.1字符串入门
【*例4.1.1-1】先请读者实际操作本例,以体会数值量与字符串的区别。
clear%清除所有内存变量
a=12345.6789%给变量a赋数值标量
class(a)%对变量a的类别进行判断
a_s=size(a)%数值数组a的“大小”
1.2346e+004
11
%给变量b赋字符标量(即单个字符)
class(b)%对变量b的类别进行判断
b_s=size(b)%符号数组b的“大小”
whos%观察变量a,b在内存中所占字节
NameSizeBytesClass
a1x18doublearray
a_s1x216doublearray
ans1x48chararray
b1x12chararray
b_s1x216doublearray
Grandtotalis10elementsusing50bytes
4.1.2串数组的属性和标识
【*例4.1.2-1】本例演示:
(1)创建串数组
Thisisanexample.
(2)串数组a的大小
size(a)
119
(3)串数组的元素标识
4)%提出一个子字符串
1)%字符串的倒排
.elpmaxenasisihT
(4)串数组的ASCII码
ascii_a=double(a)%产生ASCII码
Columns1through12
8410410511532105115329711032101
Columns13through19
1209710911210810146
char(ascii_a)%把ASCII码变回字符串
Thisisanexample.
(5)对字符串ASCII码数组的操作
%使字符串中字母全部大写
%找出串数组a中,小写字母的元素位置。
%大小写字母ASCII值差32.用数值加法改变部分码值。
char(ascii_a)%把新的ASCII码翻成字符
THISISANEXAMPLE.
(6)中文字符串数组
这是一个算例。
%创建中文字符串
A_s=size(A)%串数组的大小
A56=A([56])%取串的子数组
ASCII_A=double(A)%获取ASCII码
17
Columns1through6
547545191153947473505219549405
Column7
41379
char(ASCII_A)%把ASCII码翻译成字符
(7)创建带单引号的字符串
4.1.2-1'
(8)由小串构成长串
]%这里第2个输入为空格串
.
4.1.3复杂串数组的创建
4.1.3.1多行串数组的直接创建
【*例4.1.3.1-1】多行串数组的直接输入示例。
]
hasmultiplerows.
size(S)
18
4.1.3.2利用串操作函数创建多行串数组
【*例4.1.3.2-1】演示:
用专门函数char,str2mat,strvcat创建多行串数组示例。
)
hastworows.
这'
字符'
串数组'
由4行组成'
这
字符
串数组
由4行组成
)%“空串”会产生一个空格行
由4行组成
size(S3)
55
【*例4.1.3.2-1】的补充
(1)
创建一个二维字符数组animal
>
Animal=[‘dog’;
’monkey’];
?
Errorusing==>
vertcat
CATargumentsdimensionsarenotc