《MATLAB编程基础第2讲-数值数组、字符、元胞与结构数组.ppt》由会员分享,可在线阅读,更多相关《MATLAB编程基础第2讲-数值数组、字符、元胞与结构数组.ppt(30页珍藏版)》请在三一办公上搜索。
1、1,MATLAB编程基础,之MATLAB数值数组、字符、元胞与结构数组,第二讲,2,数组的构造,1.按元素直接排列输入 X=1 pi/2 2+i 10 X=1;pi/2;2+i;10 x=a:inc:b2.由内部函数或语句产生 y=linspace(x1,x2)生成100维行向量 y=linspace(x1,x2,n)生成n维行向量 y=ones(m,n)产生一个元素值为1的m*n大小的数组3.M文件创建 制作M文件后,使用该文件名,则代表该数组4.从外部数据文件导入 可使用load等命令,3,向量 向量元素用“”括起来,元素间用空格、逗号或分号分隔;注意:空格和逗号分隔成行向量,分号分割成列
2、向量。冒号表达式生成向量 基本格式:xx1:step:x2 xx1:x2,?a=1:2:12a=1 3 5 7 9 11?a=12:-2:1a=12 10 8 6 4 2?a=1:6a=1 2 3 4 5 6,4,变量及数组输入,5.矩阵方式输入a=1,2,3;4,5,6;7,8,0%矩阵输入(a为3阶方阵)b=366;804;351%列矩阵输入det(a)%方阵行列式inv(a)%方阵的逆x=ab%ax=b方程组的解y=inv(a)*b%与x相同disp(a,b,x)%显示矩阵,5,线性等分向量生成 y=linspace(x1,x2)生成100维行向量 y=linspace(x1,x2,n)
3、生成n维行向量,?a=linspace(1,100,6)a=1.0000 20.8000 40.6000 60.4000 80.2000 100.0000,6,对数等分向量生成 y=logspace(x1,x2)生成50维对数等分向量,y(1)=10 x1 y(50)=10 x2 y=logspace(x1,x2,n)生成n维对数等分向量y(1)=10 x1 y(n)=10 x2,?a=logspace(0,5,6)a=1 10 100 1000 10000 100000,7,标准数组生成函数 ones 产生全1数组 zeros 产生全0数组 diag 产生对角形数组 eye 产生单位数组 r
4、and 产生均匀分布随机数组 randn 产生正态分布随机数组,8,向量的基本运算与数运算,a=1.0000 20.8000 40.6000 60.4000 80.2000 100.0000?a-1ans=0 19.8000 39.6000 59.4000 79.2000 99.0000?a*2ans=2.0000 41.6000 81.2000 120.8000 160.4000 200.0000,9,函数运算,三角函数与双曲函数 x=0:pi/4:pi y1=sin(x)y2=sinh(x)plot(x,y1,r-d,x,y2,b-.)指数函数 exp log10 pow2 log log
5、2 sqrt复数函数 abs conj real angle imag圆整函数和求余函数 ceil向正无穷圆整 floor向负无穷圆整 rem求余数 mod模除求余数矩阵变换函数 x=1 2 3;4 5 6;7 8 9 y1=rot90(x)%矩阵逆时针90度翻转 y2=diag(x)%产生或提取对角阵 y3=fiplr(x)%矩阵左右翻转 y4=fipud(x)%矩阵上下翻转其他函数 y5=mean(x)y6=sum(x)y7=max(x)y8=max(max(x),10,关系运算和逻辑运算,关系运算=x=1:2:9 y=3:7 xy x=y x=y逻辑运算&|(x4)&(y4)(y6),1
6、1,数组的扩展,C=A,B 垂直串联 A=1 2;3 4;5 6 B=7 8 C=A,BC=A;B 水平串联 A1=1 2;3 4;5 6 B1=7 8 C1=A1;B1,12,扩展函数,变维reshape(X,M,N)X变为MN维reshape(X,M,N,P,)X变为MNP 或reshape(X,M N P)“:”操作符,?a=1:12;?b=reshape(a,2,6)b=1 3 5 7 9 11 2 4 6 8 10 12,?c=zeros(4,3);?c(:)=a(:)c=1 5 9 2 6 10 3 7 11 4 8 12,13,x=reshape(1:9,3,3)x(4,4)=1
7、00 x(:,5)=50 x(5,:)=55,14,字符数组,创建字符数组1、字符串的约定字符串用单引号输入赋值;字符串的每个字符都是都是字符数组的一个元素;字符串和字符数组基本上等价。class和ischar来查看变量是否为字符数组,?s=symbolics=symbolic,?size(s)ans=1 8,?s(3)ans=m,?class(s)ans=char?ischar(s)ans=1,15,字符串操作 strcat strcmp strvcat strncmp findstr upper lower blanks deblank,16,2.多行字符串 应保证每行字符串的长度相同,否
8、则补足空格B=This is a;This is a dogAny problem?Not same size,在第一行加入四个空格B=This is a;This is a dog ok!,17,3.利用串操作函数创建多行字符串 专门函数char、str2mat、strvcat创建多行字符串 总是按照最长行设置其他行字符串长度,用空格找齐 B=char(This is a,This is a pig)B=str2mat(您好,这是个示例,由3行组成。),18,4.空串 专门函数blanks创建空串、deblank删除尾部的空格符 blanks(2)str=hello;size(str)str
9、=deblank(str);size(str),19,5.利用元胞数组创建复杂字符串 c=matlab7.0,;文宇工作室,matlab7.0编程基础;disp(c1,1),disp(),20,字符串的操作,字符串的转换 num2str 数字转换为字符串 int2str 整数转换为字符串 mat2str 矩阵转换为字符串 str2num 转换字符串为数字 fprintf 格式化数据输出到文件中或者屏幕上,21,1.串与数值的转换(1)int2str A=eye(3,4)A_str=int2str(A)ischar(A_str)(2)num2str和str2num 数值与字符串互换函数 B=ra
10、nd(2,3)B_str=num2str(B,3)str2num(1 2;3 4)(3)mat2str函数 B_str=mat2str(B,4)Excute_str=10*,B_str;,?t=1/(a*b-1);a=2;b=3;c=eval(t)c=0.2000,22,执行字符串x=(0:100)/100*pi;Y=sin(x).*sin(9*x);plot(x,y)axis(0,pi,-1,1.5)y_max,i_max=max(y);x_text=x=,num2str(x(i_max);y_text=y=,num2str(y_max);max_text=char(maxinum,x_te
11、xt,y_text)hold onplot(x(i_max),y_max,b.,Markersize,20);text(t(i_max)+0.03,y_max+0.2,max_text);hold off,23,2.串与ASCII码的转换m_str=Hello;n_num=abs(m_str)char(n_num)%转换成字符串setstr(n_num)%把ASCII转换成字符串,24,3.字符串英文大小写转换m_str=Hello;upper_str=upper(m_str)lower_str=lower(m_str),25,4.字符串的比较strcmp()和strncmp()5.字符串的查
12、询与置换findstrstrfind,26,元胞数组 元胞为任意类型、任何大小的多维数组,其定义需用大括号,元素间用逗号隔开。,?a=1,2;3,4a=1 2 3 4?b=1:4,a,abcdb=1x4 double 2x2 double abcd?cellplot(b),27,元胞数组的创建与显示 1)直接赋值 a(1,1)=It is a setup example;a(1,2)=1 2 3;4 5 6;a(2,1)=;a(2,2)=sym(sin(t);2)先用cell函数进行预分配,在给元素赋值 只是创建一个指定大小的元胞数组,并且默认给元胞数组赋值为空数组Nest_cell(1,1)
13、=magic(5);Nest_cell(1,2)=5 2 8;7 3 0;6 7 3 Test 1;2-4i 5+7i 17,28,元胞数组元素的引用采用大括号为下标标识,用小括号只显示该元素的压缩形式。,?b2ans=1 2 3 4?b(2)ans=2x2 double,29,元胞数组与数值数组间的转换F1,1=1 2;3 4;F1,2=-1 0;0 1;F2,1=7 8;4 1;F2,2=4i3+2i;1-8i 5;for k=1:4 for m=1:2 for n=1:2 NUM(m,n,k)=Fk(m,n)end endendG=cell(1,16);for m=1:16 Gm=NUM(m)end,30,结构数组,与元胞数组相似,结构数组也能在一个数组中存放各类数据结构数组的基本元素叫结构结构的基本存储结构叫域域与元素差别:元素是组成数组的基本单元,而域是组成结构(结构数组元素)的基本单元,元素域,