《第4章MATLAB程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章MATLAB程序设计.ppt(64页珍藏版)》请在第壹文秘上搜索。
1、第第4 4章章 MATLABMATLAB程序设计程序设计本章内容v变量、表达式与数组变量、表达式与数组v运算操作符、关系及逻辑运算符运算操作符、关系及逻辑运算符v程序结构及流程控制语句程序结构及流程控制语句vM源文件及调试源文件及调试vM文件的加速执行文件的加速执行4.1 MATLAB的变量与表达式的变量与表达式1. 变量的命名规则变量的命名规则n变量名和函数名对字母的大小写敏感;变量名和函数名对字母的大小写敏感;n变量名的第一个字符必须是一个英文字母,变量名的第一个字符必须是一个英文字母,最多可包括最多可包括3131个字符;个字符;n变量名可由英文字母、数字和下划线混合组变量名可由英文字母、
2、数字和下划线混合组成成 ;n变量名中不得包含空格和标点,但可以由下变量名中不得包含空格和标点,但可以由下连字符连字符2. 局部变量与全局变量局部变量与全局变量局部变量:函数体内定义的变量,不能从其局部变量:函数体内定义的变量,不能从其它函数和它函数和MATLAB工作空间访问。工作空间访问。全局变量:在几个函数和全局变量:在几个函数和MATLAB工作空间工作空间中共同拥有,均可访问的变量。在函数体所中共同拥有,均可访问的变量。在函数体所有赋值语句之前进行说明,所有共享的函数有赋值语句之前进行说明,所有共享的函数均要说明。说明语句:均要说明。说明语句:global 变量名变量值;变量名变量值;3.
3、 永久变量永久变量 MATLAB的预定义变量,不能用的预定义变量,不能用clear删除,删除,不能用不能用who命令查看,主要有:命令查看,主要有:ans; eps; pi; i,j; inf; NaN; realmax; realmin等。等。 4. MATLAB的基本表达式的基本表达式表达式表达式变量变量=表达式表达式n表达式由变量名、运算符、数字和函数组成;表达式由变量名、运算符、数字和函数组成;n“”两侧可以有空格;两侧可以有空格;n分号的作用;分号的作用;n多个返回结果用多个返回结果用括起来;括起来;nans 的作用。的作用。n例:例: x=(3*42+exp(sin(45)/64.
4、2 字符串数组、单元数组和结构数组单元型单元型cell数组数组字符型字符型char结构型结构型struct数值型numeric存储型存储型Storage:int8,unit8,int16,unit16,int32,unit32双精度型双精度型double稀疏型稀疏型sparse用户对象用户对象user object1. 数据结构数据结构2. 字符串数组字符串数组n所有字符串都用单引号括起来;所有字符串都用单引号括起来;n字符串中的每个字符都是字符串变量中的一字符串中的每个字符都是字符串变量中的一个元素;个元素;n字符串中的字符以字符串中的字符以ASCIIASCII码形式存储并区分大码形式存储并
5、区分大小;小;数组的建立:数组的建立:直接赋值法:如直接赋值法:如 a=uestc;中文字符;中文字符;单引号输入;单引号输入;字符串的连接:括号或命令字符串的连接:括号或命令strcat多行字符串数组的直接创建:长度相等。多行字符串数组的直接创建:长度相等。字符串与其它类型的转换字符串与其它类型的转换: int2str,num2str,mat2str字符串数组元素的标识。字符串数组元素的标识。3. 单元数组单元数组 数组的基本成分是单元,单元内可存放任何数组的基本成分是单元,单元内可存放任何类型、任何大小的数组,且同一单元数组内各单类型、任何大小的数组,且同一单元数组内各单元的内容可以不同。
6、元的内容可以不同。 单元数组元素的标注:单元数组元素的标注: A(2,3) 指二行三列的单元元素;指二行三列的单元元素; A2,3指二行三列单元的内容;指二行三列单元的内容;单元数组的建立方法单元数组的建立方法1)赋值方法)赋值方法例:例:方法方法1 方法2A(1,1)=matlab; A1,1=matlab;A(1,2)=6.0; A1,2=6.0;A(2,1)=矩阵; A2,1=矩阵;A(2,2)=1,2,3;4,5,6;7,8,9; A2,2=1,2,3;2)单元数组方法)单元数组方法例:例:A=matlab,6.0;矩阵矩阵,1,2,3;4,5,6;7,8,93)cell 命令方法命令
7、方法A=cell(2);单元数组的访问和显示单元数组的访问和显示A1,1 A(1,1) ans= ans= matlab matlab显示:显示:celldisp:显示所有内容,一般的显示方法其矩阵只:显示所有内容,一般的显示方法其矩阵只给大小。给大小。cellplot: 显示图形显示图形(),例:例:cellplot(A)4. 结构数组结构数组 和单元数组一样,可以存放不同数据类型于一个结构和单元数组一样,可以存放不同数据类型于一个结构数组内,建立和访问都要通过结构名和域名格式为:数组内,建立和访问都要通过结构名和域名格式为:结结构数组名构数组名.域名域名例:student.name=唐军;
8、 student.age=21; student.class=200304;则: student = name: 唐军 age: 21 class: 200304 也可用函数struct建立: s= struct(field1,value1,field2,value2,.)4.3 MATLAB运算符与操作符运算符与操作符运算符:运算符:运算符含义运算符含义+加法乘方-减法/右除*乘法左除操作符操作符操作符含义操作符含义:冒号转置号()括号%注释号.小数点;分号.源目录=赋值号连续号=等于号,逗号大于号4.3 关系运算与逻辑运算关系运算与逻辑运算1.关系运算关系运算关系操作符功能关系操作符功能=
9、等于大于=大等于运算方式:标量与标量;标量与数组;数组与数组运算方式:标量与标量;标量与数组;数组与数组注:任何非零数被看作注:任何非零数被看作“1”!A = 3 4 8 9 0 2 5 3 7B = 4 4 1 7 8 4 5 1 7E=(A=B)E = 0 1 0 0 0 0 1 0 1NE=(A=B)NE = 1 0 1 1 1 1 0 1 0A0=(A5)A0 = 0 0 1 1 0 0 0 0 12.逻辑运算逻辑运算 & 与与 | 或或 非非*运算方式:标量与标量;标量与数组;数组与运算方式:标量与标量;标量与数组;数组与数组。数组。 非的优先级高于与、或。非的优先级高于与、或。标量
10、与标量标量与标量a & ba & b,当,当a a、b b全是非全是非0 0时,运算结果为时,运算结果为1 1,否则为,否则为0 0;a | ba | b,当,当a a、b b中只要有一个非中只要有一个非0 0,结果为,结果为1 1; a a,当,当a a是时,运算结果为,否则为是时,运算结果为,否则为数组和数组数组和数组 数组数组A A、B B比较的是相同位置的元素,按标量比较的是相同位置的元素,按标量的运算规则逐个进行。运算结果是一个维数与的运算规则逐个进行。运算结果是一个维数与A A相同的数组。相同的数组。标量和数组:标量和数组: 标量标量b b和数组和数组A A的每一个元素按标量关系运
11、的每一个元素按标量关系运算规则逐个比较。运算结果是一个维数与数算规则逐个比较。运算结果是一个维数与数组组A A相同的数组相同的数组AB=A&BAB = 1 1 1 1 0 1 1 1 1A_B=A|BA_B = 1 1 1 1 1 1 1 1 1C=AC = 0 0 0 0 1 0 0 0 0A = 3 4 8 9 0 2 5 3 7B = 4 4 1 7 8 4 5 1 7函数名称功能xor(A,B)xor(A,B)异或运算all(A)all(A)向量中所有元素全是非,结果为,否则为any(A)any(A)只要向量中有非元素,结果为,否则为isequel(A,B)isequel(A,B)当、
12、对应元素相等时,相应元素位置取,否则取ismember(A,B)ismember(A,B)当的元素属于时,相应元素位置取,否则取3. 关系与逻辑函数关系与逻辑函数4. 判断函数判断函数函数见书。以find为例I=find(X) 返回非零元素的位置标识向量。I,J=find(X) 返回非零元素的位置标识矩阵。I,J,V=find(X)返回非零元素的位置标识矩阵及元素。例:4-8A = 0 4 8 9 0 2 5 3 7find(A)ans = 2 3 4 6 7 8 9 I,J,V=find(A)I = 2 3 1 3 1 2 3V = 9 5 4 3 8 2 7J = 1 1 2 2 3 3
13、3A(find(A=0)=-5A = -5 4 8 9 -5 2 5 3 7运算符优先级() 高 低 (转置) .* ./ . * / + -: = = =&|运算优先级运算优先级4.4 MATLAB 程序结构程序结构1. 顺序结构顺序结构2. 循环结构循环结构1) 1) for循环循环 for 循环变量循环变量=s1:s2:s3 循环体语句循环体语句 end 其中其中s1为循环变量的初值,为循环变量的初值,s2为循环变量为循环变量的步长,的步长,s3为循环变量的终值。如果省略为循环变量的终值。如果省略s2,则默认步长为则默认步长为1。 可以嵌套,使用矩阵比循环可以嵌套,使用矩阵比循环效率高!
14、效率高!例 求出n阶Hilbert矩阵。function H=hilb(n)for i=1:n for j=1:n H(i,j)=1/(i+j-1); endend2) while循环循环 while循环一般用于不能事先确定循环次数的情况,它的调用格式为 while 逻辑变量逻辑变量 循环体语句循环体语句 end 例:用while循环求1100间整数的和 sum=0; i=1; while i=100 sum=sum+i; i=i+1; end sum sum = 5050 3. 分支结构1)if-else语句if 逻辑变量逻辑变量执行体语句执行体语句endif条件语句的另一种调用格式为if
15、逻辑变量逻辑变量执行体语句执行体语句1else执行体语句执行体语句2endif 逻辑变量逻辑变量1 执行体语句执行体语句1 elseif 逻辑变量逻辑变量2 执行体语句执行体语句2 elseif 逻辑变量逻辑变量3 执行体语句执行体语句3 else 执行体语句执行体语句n end例例 可以用下列程序得到符号函数。可以用下列程序得到符号函数。function y=signfun(x)if x=0;0, 00, 1)(nnnu)(0nnu3)实指数序列)实指数序列 代码:代码: n=0:N-1; x=a.n;Rananxn,)(4)复指数序列)复指数序列 代码:代码: n=0:N-1; x=exp
16、(lu+j*w0)*n);nenxnjw,)()(5)随机序列)随机序列rand(1,N) 产生产生0,1上均匀分布的随机矢量。上均匀分布的随机矢量。randn(1,N) 产生均值为产生均值为0,方差为,方差为1的高斯随机序列,即白噪声。的高斯随机序列,即白噪声。6)其它序列)其它序列正弦序列:用正弦序列:用sin ,cos 等函数。等函数。方波:用方波:用square函数。函数。锯齿波:用锯齿波:用sawtooth函数。函数。辛克函数:用辛克函数:用sinc函数。函数。例:例: t=0:0.01*pi:2*pi; x=sin(2*pi*t);信号的运算信号的运算1)信号加)信号加代码:代码: x=x1+x2;x1和和x2长度相同,位置对应才能相加,否则应作处理。如:长度相同,位置对应才能相加,否则应作处理。如:function y,n=sigadd(x1,n1,x2,n2)n=min(min(n1),min(n2):max(max(n1),max(n2);y1=zeros(1,length(n); y2=y1;y1(find(n=min(n1)&(n=min(n2)&(n=min(n