七、关系与逻辑运算符MATLAB的运算符有三种类型:算术运算符、关系运算符、逻辑运算符。它们的处理顺序依次为算术运算符、关系运算符、逻辑运算符。在前面我们已经介绍了算术运算符,这里我们着重介绍后两种运算符。关系与逻辑运算符假设有:A=[12-1-5]B=[0231]小于ABans=[0011]A1ans=[0011]大于ABans=[1000]A1ans=[0100]=小于等于A=Bans=[0111]=大于等于A=Bans=[1100]==等于A=Bans=[0100];A=1ans=[1000]~=不等于A~=Bans=[1011];A~=1ans=[0111]关系运算符1、关系运算符2、逻辑运算符注意:在处理逻辑运算时,运算元只有两个值即0和1,所以如果指定的数为0,MATLAB认为其为0,而任何数不等于0,则认为是1。假设有:A=[5-40-0.5]B=[0109]&与A&B=[0101]A&1=[1101]|或A|B=[1101]A|1=[1111]~非~A=[0010]~1=0逻辑运算符八、程序流程控制1、for循环语句格式:例子:exp2_11.mfor语句for循环变量=起始值:步长:终止值循环体endsum=0;fori=1:100sum=sum+i;endsum=5050i=100While循环和for循环的区别while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。while语句2、while循环语句while表达式循环体end格式例exp2_12.msum=0;j=0;whilesum100j=j+1;sum=sum+j;endsum=105j=14while语句②if逻辑表达式执行语句1else执行语句2end①if逻辑表达式执行语句end3、if,else,elseif语句格式③if逻辑表达式1执行语句1elseif逻辑表达式2执行语句2….endif语句x=input('pleaseinputx=');ifx=1y=10elseifx-1&x1y=0elsey=-10end例exp2_13_.mswitch表达式(%可以是标量或字符串)case值1语句1case值2语句2….otherwise语句3end4、switch语句格式switch语句例exp2_14.mt=-pi:0.1:pi;trigname=input('Inputtrigfunctionsname:')switchtrignamecase'sin'plot(t,sin(t))case'cos'plot(t,cos(t))otherwisebreakendswitch语句第三节、绘图简介MATLAB提供了丰富的绘图功能helpgraph2d可得到所有画二维图形的命令helpgraph3d可得到所有画三维图形的命令下面介绍常用的二维图形命令绘图简介1、plot(x1,y1,option1,x2,y2,option2,…)基本的绘图命令x1:x轴坐标值y1:y轴坐标值Option1:为选项参数,用单引号标出Plot指令例exp2_3.mexp2_3_.mt=[0:pi/20:8*pi];y=sin(t);plot(t,y,‘r:*')r表示线的颜色为红色,y(黄色)g(绿色)b(蓝色)…:表示线型为虚线,-(实线):(虚线)—(破折线)….*表示标示符号为星号,此外+(正号)o(圆形字母)…2、figure:选择图像figure(1);figure(2);…;figure(n)打开不同的图形窗口,以便绘制不同的图形。3、gridon:在所画出的图形坐标中加入栅格gridoff:除去图形坐标中的栅格4、holdon:把当前图形保持在屏幕上不变,同时允许在这个坐标内绘制另外一个图形。holdoff:使新图覆盖旧的图形其他画图指令例exp2_4.mexp2_4_.mt=[0:pi/20:9*pi];figure(1)plot(t,sin(t),'r:*')gridongridofffigure(2)plot(t,cos(t))gridongridoff其他画图指令5、设定轴的范围axis([xminxmaxyminymax])axis(‘equal’):将x坐标轴和y坐标轴的单位刻度大小调整为一样。axis指令例exp2_5.mt=[0:0.01:2*pi];x=sin(t);y=cos(t);plot(x,y)axis([-1.51.5-1.51.5])6、文字标示text(x,y,’字符串’):在图形的指定坐标位置(x,y)处,标示单引号括起来的字符串。输入特殊的文字需要用反斜杠(\)开头。gtext(‘字符串’)利用鼠标在图形的某一位置标示字符串。title(‘字符串’)在所画图形的最上端显示说明该图形标题的字符串。xlabel(‘字符串’),ylabel(‘字符串’)设置x,y坐标轴的名称。legend(‘字符串1’,‘字符串’,…,‘字符串n’)在屏幕上开启一个小视窗,然后依据绘图命令的先后用对应的字符串区分图形上的线。文字标示例exp2_5_.mt=[0:pi/20:5*pi];plot(t,sin(t),'r:*')xlabel('t(deg)')ylabel('magnitude')title('sinewavefrom…zeroto5\pi')text(pi/2,sin(pi/2),'\bullet\…leftarrowThesin(t)att=2')legend('sin(t)','cos(t)')gtext('文字标示命令举例')文字标示7、subplot(mnk):分割图形显示窗口m:上下分割个数,n:左右分割个数,k:子图编号t=[0:pi/20:5*pi];figure(1)subplot(121)plot(t,sin(t))gridonsubplot(122)plot(t,-sin(t))gridon例exp2_6.mSubplot指令8、semilogx:绘制以x轴为对数坐标(以10为底),y轴为线性坐标的半对数坐标图形。semilogy:绘制以y轴为对数坐标(以10为底),x轴为线性坐标的半对数坐标图形。例exp2_17.mx=0:0.1:1;y=10.^x;semilogy(x,y)Semilog指令可用于数值统计分析或离散数据处理bax(x,y);hist(y,x);stairs(x,y);stem(x,y);应用型绘图指令9、了解应用型绘图指令:subplot(221)x=[12345678910];y=[56348110356];bar(x,y)例exp2_7.msubplot(222)x1=randn(1,1000);y1=-3:0.1:3;hist(x1,y1)应用型绘图指令subplot(223)x2=0:0.1:10;y2=1./(x2.^3-2.*x2+4);stairs(x2,y2)subplot(224)x3=0:0.1:10;y3=1./(x2.^3-2.*x2+4);stem(x3,y3)(续)应用型绘图指令10、一点补充说明对于图形的属性编辑同样可以通过在图形窗口上直接进行。但图形窗口关闭之后编辑结果不会保存一点补充说明第四节MATLAB程序设计入门一、MATLBA程序的基本设计原则%后面的内容是程序的注解,要善于运用注解使程序更具可读性。养成在主程序开头用clear指令清除变量的习惯,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用clear。参数值要集中放在程序的开始部分,以便维护。要充分利用MATLAB工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中间结果不在屏幕上显示,以提高执行速度。input指令可以用来输入一些临时的数据;而对于大量参数,则通过建立一个存储参数的子程序,在主程序中用子程序的名称来调用。程序尽量模块化,也就是采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部的操作。充分利用Debugger来进行程序的调试(设置断点、单步执行、连续执行),并利用其他工具箱或图形用户界面(GUI)的设计技巧,将设计结果集成到一起。设置好MATLAB的工作路径,以便程序运行。MATLAB程序设计入门MATLAB程序的基本组成结构%说明清除命令:清除workspace中的变量和图形(clear,close)定义变量:包括全局变量的声明及参数值的设定逐行执行命令:指MATLAB或工具箱提供的运算指令………控制循环包含for,ifthen,switch,while等语句逐行执行命令………end绘图命令:将运算结果绘制出来MATLAB程序的基本组成结构MATLAB程序的基本组成结构functionpower=test()a=-5:5;power=zeros(1,11);fori=1:11power(i)=a(i)^2;endplot(a,power,'r:*');例test.m二、M文件的编辑及MATLAB工作路径的设置进入MATLAB的ditor/Debugger窗口来编辑程序在编辑环境中,文字的不同颜色显示表明文字的不同属性。绿色:注解;黑色:程序主体;红色:属性值的设定;蓝色:控制流程。M文件的编辑在运行程序之前,必须设置好MATLAB的工作路径,使得所要运行的程序及运行程序所需要的其他文件处在当前目录之下,只有这样,才可以使程序得以正常运行。否则可能导致无法读取某些系统文件或数据,从而程序无法执行。通过cd指令在命令窗口中可以更改、显示当前工作路径。通过路径浏览器(pathbrowser)也可以进行设置MATLAB工作路径的设置三、MATLAB的程序类型脚本M文件在命令窗口中输入并执行它所用的变量都要在工作空间中获取程序文件以.m格式进行存取程序运行时只需在工作空间中键入其名称即可函数文件例myhilb1.mmyhilb.mMATLAB的程序类型四、声明子程序(函数程序)变量子程序与主程序之间的数据是通过参数进行传递的,子程序应用主程序传递来的参数进行计算后,将结果返回主程序。例exp2_9.m如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。全局变量可以用global来声明。例exp2_10.m子程序变量掌握MATLAB语言的基本知识掌握矩阵的基本运算及操作掌握基本的二维绘图命令。掌握三种基本的M文件类型善于运用help命令自学。总结总结参考书目:1.《现代通信系统--使用MATLAB》。约翰·G·谱罗克斯,马苏德·萨勒赫,刘树棠译。西安交通大学出版社。2.《MATLAB与通信仿真》。王立宁,乐光新,赞菲。人民邮电出版社。3.《精通MATLAB5》。张宜华。清华大学出版社。参考书目谢谢!