第一章MATLAB基础知识 语句组m else 语句组n end 语句用于实现多分支选择结构。 例1-7输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出 其对应的大写字母:若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input('请输入一个字符,s'): if c>='A'c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>=a'&c<='z' disp(setstr(abs(c)-abs('a')+abs('A))); elseif c>='0'&c<='9' disp(abs(c)-abs('0')); else disp(c); end switch语句 switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch表达式 case表达式1 语句组1 case表达式2 语句组2 case表达式m 语句组m otherwise 语句组n end 当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执 行语句组2,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等 于cas所列的表达式的值时,执行语句组n。当任意一个分支的语句执行完后,直接执行 switch语句的下一句。 例1-8某商场对顾客所购买的商品实行打折销售,标准如下商品价格用pice来表示): price<200 没有折扣 200≤price<-500 3%折扣 500≤price<-1000 5%折扣 1000≤price<-2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。 程序如下: price=-input('请输入商品价格); 9
第一章 MATLAB 基础知识 9 语句组 m else 语句组 n end 语句用于实现多分支选择结构。 例 1-7 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出 其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')-abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)-abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end ⚫ switch 语句 switch 语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式 1 语句组 1 case 表达式 2 语句组 2 . case 表达式 m 语句组 m otherwise 语句组 n end 当表达式的值等于表达式 1 的值时,执行语句组 1,当表达式的值等于表达式 2 的值时,执 行语句组 2,.,当表达式的值等于表达式 m 的值时,执行语句组 m,当表达式的值不等 于 case 所列的表达式的值时,执行语句组 n。当任意一个分支的语句执行完后,直接执行 switch 语句的下一句。 例 1-8 某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用 price 来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。 程序如下: price=input('请输入商品价格');
第一章MATLAB基础知识 switch fix(price/100) case {0,1} %价格小于200 rate=0; case{2,3,4月 %价格大于等于200但小于500 rate=3/100; case num2cell(5:9) %价格大于等于500但小于1000 rate=5/100: case num2cell(10:24) %价格大于等于1000但小于2500 rate=8/100; case num2cell(25:49) %价格大于等于2500但小于5000 rate=10/100: otherwise %价格大于等于5000 rate=14/100: end price=price*(1-rate) %输出商品实际销售价格 ●try语句 语句格式为: try 语句组1 catch 语句组2 end ty语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息 赋给保留的lasterr变量,并转去执行语句组2。 例1-9矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错, 则自动转去求两矩阵的点乘。 程序如下: A=1,2,3;4,5,6;B=7,8,9;10,11,12; try C=A*B: catch C=A.*B; end c lasterr %显示出错原因 (3)循环结构 ● for语句 for语句的格式为: for循环变量-表达式1:表达式2:表达式3 循环体语句 end 其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变 量的终值。步长为1时,表达式2可以省略。 例1-10一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙 10
第一章 MATLAB 基础知识 10 switch fix(price/100) case {0,1} %价格小于 200 rate=0; case {2,3,4} %价格大于等于 200 但小于 500 rate=3/100; case num2cell(5:9) %价格大于等于 500 但小于 1000 rate=5/100; case num2cell(10:24) %价格大于等于 1000 但小于 2500 rate=8/100; case num2cell(25:49) %价格大于等于 2500 但小于 5000 rate=10/100; otherwise %价格大于等于 5000 rate=14/100; end price=price*(1-rate) %输出商品实际销售价格 ⚫ try 语句 语句格式为: try 语句组 1 catch 语句组 2 end try 语句先试探性执行语句组 1,如果语句组 1 在执行过程中出现错误,则将错误信息 赋给保留的 lasterr 变量,并转去执行语句组 2。 例 1-9 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错, 则自动转去求两矩阵的点乘。 程序如下: A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12]; try C=A*B; catch C=A.*B; end C lasterr %显示出错原因 (3)循环结构 ⚫ for 语句 for 语句的格式为: for 循环变量=表达式 1:表达式 2:表达式 3 循环体语句 end 其中表达式 1 的值为循环变量的初值,表达式 2 的值为步长,表达式 3 的值为循环变 量的终值。步长为 1 时,表达式 2 可以省略。 例 1-10 一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙
第一章MATLAB基础知识 花数。 程序如下: form=100:999 ml=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10);%求m的十位数字 m3=rem(m,10); %求m的个位数字 if m==ml*ml*ml+m2*m2*m2+m3*m3*m3 disp(m) end end ● while语句 while语句的一般格式为: while(条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果 不成立则跳出循环。 例1-11从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。 程序如下: sum=0; cnt=0; val=input('Enter a number (end in 0):') while (val-=0) sum=sum+val; cnt=cnt+1; val=input('Enter a number (end in 0):'); end if (cnt>0) sum mean=sum/cnt end break语句和continue语句 ● beak语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继 续执行循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将 跳过循环体中所有剩下的语句,继续下一次循环。 例1-12求100,200之间第一个能被21整除的整数。 程序如下: forn=100:200 if rem(n,21)~=0 continue end break end u
第一章 MATLAB 基础知识 11 花数。 程序如下: for m=100:999 m1=fix(m/100); %求 m 的百位数字 m2=rem(fix(m/10),10); %求 m 的十位数字 m3=rem(m,10); %求 m 的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m) end end ⚫ while 语句 while 语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果 不成立则跳出循环。 例 1-11 从键盘输入若干个数,当输入 0 时结束输入,求这些数的平均值和它们之和。 程序如下: sum=0; cnt=0; val=input('Enter a number (end in 0):'); while (val~=0) sum=sum+val; cnt=cnt+1; val=input('Enter a number (end in 0):'); end if (cnt > 0) sum mean=sum/cnt end ⚫ break 语句和 continue 语句 break 语句用于终止循环的执行。当在循环体内执行到该语句时,程序将跳出循环,继 续执行循环语句的下一语句。 continue 语句控制跳过循环体中的某些语句。当在循环体内执行到该语句时,程序将 跳过循环体中所有剩下的语句,继续下一次循环。 例 1-12 求[100,200]之间第一个能被 21 整除的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break end
第一章MATLAB基础知识 (4)函数文件 ●函数文件的基本结构 函数文件由function语句引导,其基本结构为: function输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 其中以function开头的一行为引导行,表示该M文件是一个函数文件。函数名的命名 规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 ●函数调用 函数调用的一般格式是: 输出实参表]=函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个 数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然 后再执行函数的功能。 例1-13利用函数的递归调用,求nl。 !本身就是以递归的形式定义的:显然,求!需要求(n-1),这时可采用递归调用。递归调 用函数文件factor.m如下: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; %递归调用求(n-1)! end 3
第一章 MATLAB 基础知识 12 n (4)函数文件 ⚫ 函数文件的基本结构 函数文件由 function 语句引导,其基本结构为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体语句 其中以 function 开头的一行为引导行,表示该 M 文件是一个函数文件。函数名的命名 规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形 参多于一个时,则应该用方括号括起来。 ⚫ 函数调用 函数调用的一般格式是: [输出实参表]=函数名(输入实参表) 要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个 数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然 后再执行函数的功能。 例 1-13 利用函数的递归调用,求 n!。 n!本身就是以递归的形式定义的:显然,求 n!需要求(n-1)!,这时可采用递归调用。递归调 用函数文件 factor.m 如下: function f=factor(n) if n<=1 f=1; else f=factor(n-1)*n; %递归调用求(n-1)! end
第二章MATLAB计算结果可视化和确知信号分析 第二章MATLAB计算结果可视化和确知信号分析 本章目标 ·掌握二维平面图形的绘制方法,能够使用这些方法进行常用的数据可视化处理 ● 理解周期信号的傅里叶级数展开的物理意义 ●掌握信号的傅里叶变换及其反变换 2.1计算结果可视化 MATLAB在数据可视化方面的表现能力很强。它的图形处理能力不仅功能强大,而且 充分考虑了不同层次用户的不同需求,系统具有两个层次的绘图指令:一个层次是直接对 图形句柄进行操作的底层绘图指令;另一层次是在底层指令基础上建立的高层绘图指令。 常用的MATLAB绘图语句有figure、.plot、subplot、stem等,图形修饰语具有title、axis text等。 (1)figure语句 figure有两种用法。当只有一句igue命令时,程序会创建一个新的图形窗口,并返回 一个整数型的窗口编号。当采用figure(n)时,表示将第n个图形窗口作为当前的图形窗口, 将其显示在所有窗口的最前面。如果该图形窗口不存在,则新建一个窗口,并赋以编号。 (2)plot语句 线形绘图函数。用法为plo(x,y's)。参数x为横轴变量,y为纵轴变量,s用以控制图 形的基本特征如颜色、粗细等,通常可以省略,常用方法如表2-1所示。 表2-1plot命令的参数及其含义 参数 含义 参数 含义 参数 含义 y 黄色 点 实线 m 紫色 0 圆 虚线 c 青色 X 打叉 点划线 r 红色 + 加号 破折线 g 绿色 星号 向上三角形 b 蓝色 正方形 < 向左三角形 W 白色 d 菱形 向右三角形 k 黑色 向下三角形 p 五角星形 (3)subplot语句 subplot(m,n,i是分割显示图形窗口命令,它把一个图形窗口分为m行n列共m×n个 小窗口,并指定第i个小窗口为当前窗口。 (4)二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等, 所采用的函数分别是: bar(k,y,选项) stairs(x,y,选项) stem(x,y,选项) fil(x1,y1,选项1,x2,y2,选项2,.) 例2-1分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x). 13
第二章 MATLAB 计算结果可视化和确知信号分析 13 第二章 MATLAB 计算结果可视化和确知信号分析 本章目标 ⚫ 掌握二维平面图形的绘制方法,能够使用这些方法进行常用的数据可视化处理 ⚫ 理解周期信号的傅里叶级数展开的物理意义 ⚫ 掌握信号的傅里叶变换及其反变换 2.1 计算结果可视化 MATLAB 在数据可视化方面的表现能力很强。它的图形处理能力不仅功能强大,而且 充分考虑了不同层次用户的不同需求,系统具有两个层次的绘图指令:一个层次是直接对 图形句柄进行操作的底层绘图指令;另一层次是在底层指令基础上建立的高层绘图指令。 常用的 MATLAB 绘图语句有 figure、plot、subplot、stem 等,图形修饰语具有 title、axis、 text 等。 (1)figure 语句 figure 有两种用法。当只有一句 figure 命令时,程序会创建一个新的图形窗口,并返回 一个整数型的窗口编号。当采用 figure(n)时,表示将第 n 个图形窗口作为当前的图形窗口, 将其显示在所有窗口的最前面。如果该图形窗口不存在,则新建一个窗口,并赋以编号 n。 (2)plot 语句 线形绘图函数。用法为 plot(x,y,’s’)。参数 x 为横轴变量,y 为纵轴变量,s 用以控制图 形的基本特征如颜色、粗细等,通常可以省略,常用方法如表 2-1 所示。 表 2-1 plot 命令的参数及其含义 参数 含义 参数 含义 参数 含义 y 黄色 . 点 - 实线 m 紫色 o 圆 : 虚线 c 青色 x 打叉 -. 点划线 r 红色 + 加号 - 破折线 g 绿色 * 星号 ^ 向上三角形 b 蓝色 s 正方形 < 向左三角形 w 白色 d 菱形 > 向右三角形 k 黑色 v 向下三角形 p 五角星形 (3)subplot 语句 subplot(m,n,i)是分割显示图形窗口命令,它把一个图形窗口分为 m 行 n 列共 m×n 个 小窗口,并指定第 i 个小窗口为当前窗口。 (4)二维统计分析图 在 MATLAB 中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等, 所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项 1,x2,y2,选项 2,.) 例 2-1 分别以条形图、阶梯图、杆图和填充图形式绘制曲线 y=2sin(x)