1、1第五章 MATLAB 程序设计基础5.1 细胞数组与结构数组5.1.1 细胞数组细胞数组是以单元为元素的数组,每个元素成为单元,每个单元可以包含其他类型数组,如:矩阵、字符串、复数。【例 5.1.1-1】建立 1 个 22 的细胞数组。clear;a(1,1)=3+2i;a(1,2)=time;a(2,1)=1 2 3;a(2,2)=1.234;2.456;3.789;输入 a,运行结果为:a = 3.0000+ 2.0000i time 1x3 double 3x1 double输入 a2,2,运行结果为:ans =1.23402.45603.7890【例 5.1.1-2】建立 1 个 2
2、2 的细胞数组。运行结果为:b=name 2;3;4 2+5i bb = name 3x1 double 2.0000+ 5.0000i5.1.2 结构数组结构数组是根据属性名(fied)组织起来的不同类型数据的集合。结构数组的任何一个属性可以包括不同数据类型,如字符串、矩阵、标量等。调用格式:s=struct(field1,values1,field2,values2,field3,values3,)【例 5.1.2-1】结构数组 student=struct(name,Liu,Wang,Age,20,21);求 student(1) 、student (2) 、student.name;s
3、tudent=struct(name,Liu,Wang,Age,20,21);student(1)ans = name: LiuAge: 202student(2)ans = name: WangAge: 21student.nameans =Liuans =Wang5.2 函数文件MATLAB 的函数文件是使用扩展名为 m 的文件,它用来定义一个函数,定义过程中必须指定函数名和输入输出参数,并由 MATLAB 语句序列给出一系列操作和处理,从而生成所需要的数据。【例 5.2-1】建立函数文件 ex5_1.mfunction y=ex5_1(t)y=sin(t).*exp(-t);plot(t
4、,y);(注意:文件名一定用ex5_1)调用(另编一个程序,或在命令窗口输入) :t=0:pi/50:pi;y=ex5_1(t);【例 5.2-2】建立函数文件 ex5_2.mfunction y=ex5_2(a,t)if a=1y=sin(t);elseif a=2y=sin(t).*exp(-t);elsey=cos(t).*sin(t);endplot(t,y);调用:t=0:pi/50:pi;a=1;y=ex5_2(a,t);3【例 5.2-3】建立函数文件 ex5_3.m,该 m 文件 ex5_3m.m 中调用functiony1,y2,y3=ex5_3(t)y1=sin(t);y2
5、=sin(t).*exp(-t);y3=cos(t).*sin(t);调用程序:clear;t=0:pi/50:2*pi;s1,s2,s3=ex5_3(t);plot(t,s1,t,s2,t,s3);5.3 运算符5.3.1 算数运算符+、-、* 、.*、.、.、/、./;5.3.2 关系运算符=(等于)、=(不等于)、(大于)、=(大于等于)、(小于)、=(小于等于) 。5.3.3 逻辑运算符fname=input(input Function name=);t=0:pi/50:2*pi;if fname=siny=sin(t);else fname=expy=exp(t);endplot(
6、t,y);4【例 5.4.2-2】clear;a=input(input a=);t=0:pi/50:2*pi;if a=1y=sin(t);elseif a=2y=sin(t).*exp(-t);elsey=cos(t).*sin(t);endplot(t,y);5.4.2.2 开关语句(switch-case-end)【例 5.4.2.2-1】clear;a=input(input a=);t=0:pi/50:2*pi;switch acase 1y=sin(t);case 2y=sin(t).*exp(-t);otherwisey=t.3;endplot(t,y);5.4.3 循环结构5.4.3.1 for-end 循环【例 5.4.3.1-1】for i=1:10y(i)=sin(i*pi/10);end【例 5.4.3.1-2】i=1:10y=sin(i*pi/10);执行比【例 5.3.1.1-1】更快、更直观、输入数据更少。5【例 5.4.3.1-3】for i=10:-1:1y(i)=iend【例 5.4.3.1-4】for i=1:3for j=1:3a(i,j)=i+j;endend5.4.3.2 while-end 循环【例 5.4.3.2-1】sum=0;i=0;while sum100i=i+1;sum=sum+i;end