资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
14 字符串数组、元胞数组和构架数组4.1 字符串数组4.1.1 字符串入门【*例 4.1.1-1】先请读者实际操作本例,以体会数值量与字符串的区别。clear %清除所有内存变量a=12345.6789 %给变量 a赋数值标量class(a) %对变量 a的类别进行判断 a_s=size(a) %数值数组 a的“大小” a =1.2346e+004ans =doublea_s =1 1 b=S %给变量 b赋字符标量(即单个字符)class(b) %对变量 b的类别进行判断 b_s=size(b) %符号数组 b的“大小” b =Sans =charb_s =1 1 whos %观察变量 a,b在内存中所占字节 Name Size Bytes Classa 1x1 8 double arraya_s 1x2 16 double arrayans 1x4 8 char arrayb 1x1 2 char arrayb_s 1x2 16 double arrayGrand total is 10 elements using 50 bytes 4.1.2 串数组的属性和标识【*例 4.1.2-1】本例演示:串的基本属性、标识和简单操作。(1 )创建串数组a=This is an example. a =This is an example. (2 )串数组 a 的大小size(a) ans =1 19 2(3 )串数组的元素标识a14=a(1:4) %提出一个子字符串 ra=a(end:-1:1) %字符串的倒排 a14 =Thisra =.elpmaxe na si sihT (4 )串数组的 ASCII 码ascii_a=double(a) %产生 ASCII码 ascii_a =Columns 1 through 12 84 104 105 115 32 105 115 32 97 110 32 101Columns 13 through 19 120 97 109 112 108 101 46 char(ascii_a) %把 ASCII码变回字符串 ans =This is an example. (5 )对字符串 ASCII 码数组的操作%使字符串中字母全部大写w=find(a=a&ay_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) %画纵坐标为 0的基准线hold on %保持绘制的线不被清除plot(t,y,b) %用兰色画 y(t)曲线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),hold off%书写图名、横坐标名、纵坐标名 50 t图 4.1.3.3-1 字符串运用示意图4.1.3.4 利用元胞数组创建复杂字符串【*例 4.1.3.4-1】元胞数组在存放和操作字符串上的应用。a=MATLAB 5 ;b=introduces new data types:;%创建单行字符串 a,bc1=Multidimensional array;c2=User-definable data structure;c3=Cell arrays;c4=Character array;c=char(c1,c2,c3,c4); %创建多行字符串 cC=a;b;c; %利用元胞数组存放长短不同的字符串 disp(C1:2) %显示前两个元胞中的字符内容 disp( ) %显示一行空白disp(C3) %显示第 3个元胞中的字符内容 MATLAB 5 introduces new data types:Multidimensional array User-definable data structureCell arrays Character array 4.1.4 串转换函数【*例 4.1.4-1】fprintf, sprintf, sscanf 的用法示例。rand(state,0);a=rand(2,2); %产生 随机阵)2(s1=num2str(a) %把数值数组转换为串数组s_s=sprintf(%.10en,a) %10数位科学记述串,每写一个元素就换行。 s1 =0.95013 0.606840.23114 0.48598s_s =9.5012928515e-0012.3113851357e-0016.0684258354e-0014.8598246871e-001 fprintf(%.5g,a) %以 5位数位最短形式显示。不能赋值用 0.950130.231140.606840.48598 6s_sscan=sscanf(s_s,%f,3,2)%浮点格式把串转换成成 数值数组。 )23(s_sscan =0.9501 0.48600.2311 00.6068 0 4.1.5 串操作函数4.2 元胞数组4.2.1 元胞数组的创建和显示4.2.1.1 元胞标识寻访和内容编址寻访的不同4.2.1.2 元胞数组的创建和显示【*例 4.2.1.2-1】本例演示: 元胞数组的创建。)2(C_str=char(这是,元胞数组创建算例 1); %产生字符串R=reshape(1:9,3,3); %产生 实数阵 R)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 %显示元胞数组 A = 2x10 char 3x3 double1.0000+ 2.0000i 1x1 sym (2 )直接创建法之二:“编址元胞元素内涵的直接赋值法”B1,1=C_str;B1,2=R;B2,1=Cn;B2,2=S_sym;celldisp(B) %显示元胞数组内容 B1,1 =这是 元胞数组创建算例 1B2,1 =1.0000 + 2.0000iB1,2 =1 4 72 5 83 6 9B2,2 =-sin(3*t)*exp(-t) 4.2.2 元胞数组的扩充、收缩和重组【*例 4.2.2-1】元胞数组的扩充。7(1 )利用 cell 指令创建元胞数组C=cell(2); %预设 空元胞数组 )2(C(:,1)=char(Another,text string);10:-1:1 %对第一列元胞赋值 C = 2x11 char 1x10 double (2 )元胞数组的“列”扩充和“行”扩充AC=A C %空格(或逗号)利用来分隔列 A_C=A;C %分号利用来分隔“行” AC = 2x10 char 3x3 double 2x11 char 1.0000+ 2.0000i 1x1 sym 1x10 double A_C = 2x10 char 3x3 double1.0000+ 2.0000i 1x1 sym 2x11 char 1x10 double 【*例 4.2.2-2】cellplot 能用图形形象化地表示元胞数组的内容。(A_C 取自上例)cellplot(A_C,legend) r 图 4.2.2-1 元胞数组 A_C 的形象化结构图【*例 4.2.2-3】元胞数组的收缩和重组。(1 )元胞数组的收缩A_C(3,:)= %删除第 3行,使 A_C成为 的元胞数组 )23(A_C = 2x10 char 3x3 double1.0000+ 2.0000i 1x1 sym 1x10 double (2 )把 A_C 重组成 元胞数组 R_A_C)32(R_A_C=reshape(A_C,2,3) R_A_C = 82x10 char 1x10 double 1x1 sym1.0000+ 2.0000i 3x3 double 4.2.3 元胞数组内容的调取【*例 4.2.3-1】元胞数组内容的调取示例。(1 )取一个元胞f1=R_A_C(1,3) %使用园括号寻访得到的是元胞,而不仅是内容。 class(f1) f1 = 1x1 symans =cell (2 )取一个元胞的内容f2=R_A_C1,3 %用花括号寻访取得内容 class(f2) f2 =sin(-3*t)*exp(-t)ans =sym (3 )取元胞内的子数组f3=R_A_C1,1(:,1 2 5 6) %注意三种括号的不同用途%取第 1行第 1列元胞内容中的第 1、2、5、6 列。 f3 =这是 元胞创建 (4 )同时调取多个元胞内容f4,f5,f6=deal(R_A_C1,3,4) %取三个元胞内容,赋值给三个变量 f4 =这是 元胞数组创建算例 1f5 =10 9 8 7 6 5 4 3 2 1f6 =1 4 72 5 83 6 9 4.3 构架数组4.3.1 构架数组的创建和显示4.3.1.1 直接创建法及显示【*例 4.3.1.1-1】本例通过温室数据(包括温室名、容积、温度、湿度等)演示:单构架的9创建和显示。(1 )直接对域赋值法产生“单构架”,即 构架数组。)1(green_house.name=一号房; %构架的域由(构架名).(域名)标识。 green_house.volume=2000立方米; %green_house.parameter.temperature=31.2 30.4 31.6 28.72
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号