版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章MATLAB基本程序设计
MATLAB程序设计方式:■草稿纸方式(命令行方式)■基本程序设计(结构程序设计)■图形界面程序设计(面向对象)MATLAB基本程序设计要点:■MATLAB的程序文件名以m作为扩展名■通过Edit命令进入m文件的编辑
■一个完整的应用程序由主程序和函数组成第5章MATLAB基本程序设计
主要内容(5)■M文件■输入输出语句■程序控制语句■程序的调试5.1M文件一、主程序(脚本)1、一个主程序的例子编写一个双音频程序,显示某个键的波形:(Hz)120913361477697123770456852789941*0#5.1M文件设主程序文件名为mydt.m%产生一个双音频
fs=8000;t=(0:1/fs:0.2);f1=697;f2=1209;%键1对应的两个频率y=sin(2*pi*f1*t)+sin(2*pi*f2*t);plot(t,y);wavplay(y,fs)5.1M文件2、主程序的组成▓帮助段(带注释符%的行)▓程序段
如果有第一行(function),则主程序为函数文件形式
,变量不保存到工作区中,为局部变量.
如果没有第一行(function),则主程序为命令文件形式,相当于各命令行的集合。变量保存到工作区中.5.1M文件3、几点说明▓文件名不能为汉字或数字开头▓注释符%后面的文字不执行▓程序的每一行的执行相当于在命令行执行▓一行可以写多条语句,以‘,’或‘;’隔开;一行写不下时,以‘…’续行▓对于命令文件形式,建议在程序段开始用
clear,closeall等命令清除以前的变量▓对于函数文件形式,程序中的所有变量均为局部变量。5.1M文件二、函数
函数是用用来定义子程序的。主程序实际上也是一个函数(由MATLAB调用)。1、函数头的形式:
function函数名()(无变量传递)function函数名(var1,var2,…)(无返回值)function[y1,y2,…]=函数名(var1,var2,…)5.1M文件2、函数的位置▓函数可以是一个单独的文件(文件名和函数名应相同)▓函数也可以放在主程序的后面。
5.1M文件3、举例根据t,f1,f2生成双音频的函数functionfy=mydtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);该函数可以是单独文件或在主程序后面。例如:mydt1.m5.1M文件%程序mydt1.m产生一个双音频clc;clearall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);%键1对应的两个频率plot(t,y);wavplay(y,fs);%函数functionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);5.1M文件%程序文件mydt1.m产生一个双音频clc;clear;closeall;fs=8000;t=(0:1/fs:0.2);y=dtones(t,697,1209);plot(t,y);wavplay(y,fs);%函数文件dtones.mfunctionfy=dtones(t,f1,f2)fy=sin(2*pi*f1*t)+sin(2*pi*f2*t);5.1M文件4、全局变量:如果在主程序和函数中使用同一变量,应定义全局变量。globalval1val2…%程序文件mydt2.m产生一个双音频clc;clear;closeall;globaltfsfs=8000;t=(0:1/fs:0.2);y=dtones1(697,1209);plot(t,y);%函数文件dtones1.mfunctionfy=dtones1(f1,f2)globaltfsfy=sin(2*pi*f1*t)+sin(2*pi*f2*t);wavplay(fy,fs);%程序文件名为mean.mfunctiony=mean(x)%mean求平均值%对于向量,返回向量x中各元素的平均值%对于矩阵,返回包含各列元素平均值的行向量[m,n]=size(x);ifm==1m=n;end;y=sum(x)/m;>>helpmeanmean求平均值对于向量,返回向量x中各元素的平均值对于矩阵,返回包含各列元素平均值的行向量
例:编写函数文件求半径为r的圆的面积和周长。函数文件如下:function[s,p]=fcircle(r)%CIRCLEcalculate%r圆半径%s圆面积%p圆周长s=pi*r*r;p=2*pi*r;函数调用的一般格式是:
[输出实参表]=函数名(输入实参表)
要注意的是,函数调用时各实参出现的顺序、个数,应与函数定义时形参的顺序、个数一致,否则会出错。函数调用时,先将实参传递给相应的形参,从而实现参数传递,然后再执行函数的功能。例:函数文件examp.m:functionfout=charray(a,b,c)ifnargin==1fout=a;elseifnargin==2fout=a+b;elseifnargin==3fout=(a*b*c)/2;end
命令文件mydemo.m:x=[1:3];y=[1;2;3];examp(x)examp(x,y')examp(x,y,3)5.2输入输出语句(人机交互)1、屏幕输入格式:x=input(‘提示符’)----等待输入数据
x=input(‘提示符’,‘s’)----等待输入字符串
xm=input('What''syourname?','s');
5.2输入输出语句(人机交互)2、菜单命令格式:x=menu(‘标题’,‘菜单项1’,菜单项2’,…)返回菜单序号。例如:x=menu(‘Title’,’Plus’,’Minus’)5.2输入输出语句(人机交互)3、暂停格式:pause------等待敲击键盘
pause(n)-----等待n秒4、交出键盘格式:keyboad---程序执行到该命令时暂停,在屏幕上显示K,这时用户可输入命令,查看中间结果,输入return命令,则程序继续执行5.2输入输出语句(人机交互)5、中止执行6、显示格式:display(x)-----在命令行显示x的内容格式:^C---强行停止程序的执行,回到命令行5.2输入输出语句(人机交互)7、打印格式:print---------打印当前绘图print-dbitmap文件名
---------将绘图转为图象文件
-djpeg
例:输入x,y的值,并将它们的值互换后输出。程序如下:
x=input('Inputxplease.');y=input('Inputyplease.');z=x;x=y;y=z;disp(x);disp(y);例:求一元二次方程ax2+bx+c=0的根。程序如下:a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);例:分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。程序1:首先建立命令文件并以文件名f2c.m存盘。clear;%清除工作空间中的变量f=input('InputFahrenheittemperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为:InputFahrenheittemperature:73c=22.7778程序2:首先建立函数文件f2c.m。functionc=f2c(f)c=5*(f-32)/9然后在MATLAB的命令窗口调用该函数文件。clear;y=input('InputFahrenheittemperature:');x=f2c(y)输出情况为:InputFahrenheittemperature:70c=21.1111x=21.11115.3程序控制语句任何计算机语言都有三种基本结构,即:►顺序结构:无控制语句►分支结构:if,switch►循环结构:for,while5.3程序控制语句1、顺序结构:无控制语句
按照顺序从头至尾地执行程序中的各条语句。顺序结构一般不包含其他任何子语句或控制语句。例如:n=0:100;x=sin(2*pi*0.01*n);plot(x);holdonstem(x,’r’);grid5.3程序控制语句►分支结构:if,switchif和switch语句用于根据条件选择执行相应的语句。1、if语句(适合分支少)if语句根据逻辑表达式的值来确定是否执行紧接的语句体。常见的调用格式有:5.3程序控制语句格式1:if表达式语句
end格式2:if表达式语句1else
语句2end5.3程序控制语句格式3:
if表达式1
语句1elseif表达式2
语句2else
语句3end例如:判断输入数的奇偶性n=input(‘n=’);ifrem(n,2)==0display(‘n是偶数’)elsedisplay(‘n是奇数’)end5.3程序控制语句2、switch语句(适合分支多)格式:
switch表达式(标量或表达式)
case值1
语句1case值2
语句2…otherwise
语句nend5.3程序控制语句switch语句和if语句类似。Switch语句根据变量或表达式的取值不同分别执行不同的命令。5.3程序控制语句例如:根据菜单选择显示不同的函数x=menu('波形','正弦','余弦','正切','余切');switchxcase1ezplot('sin')case2ezplot('cos')case3ezplot('tan')case4ezplot('cot')end5.3程序控制语句3、for语句格式:for变量=初值:增量:终值语句
end
例如:求100!
x=1;fork=1:1:100x=x*k;endx例:已知,当n=100时,求y的值。程序如下:
y=0;n=100;fori=1:ny=y+1/(2*i-1);endy
在实际MATLAB编程中,采用循环语句会降低其执行速度,所以前面的程序通常由下面的程序来代替:
n=100;i=1:2:2*n-1;y=sum(1./i);yfor语句更一般的格式为:
for循环变量=矩阵表达式循环体语句
end执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。
例:写出下列程序的执行结果。
s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];
fork=as=s+k;enddisp(s');5.3程序控制语句4、while语句格式:while表达式语句
end例如:计算1,…,1000的和x=1;whilex<=1000x=x+1;end表达式成立(为真)时,一直执行语句,否则跳出循环.例如:求Matlab中的最大实数。
例:从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。程序如下:sum=0;cnt=0;val=input('Enteranumber(endin0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enteranumber(endin0):');endif(cnt>0)summean=sum/cntend5.3程序控制语句5、break和continue语句用于循环语句(for,while):break:用于跳出循环continue:跳过后面的语句继续循环5.3程序控制语句例:输出100到200之间第一个能被7整除的数fori=100:200ifrem(i,7)~=0continueendbreakendi循环的嵌套如果一个循环结构的循环体又包括一个循环结构,就称为循环的嵌套,或称为多重循环结构。
例:若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。
form=1:500s=0;fork=1:m/2ifrem(m,k)==0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026春人教版小学数学一年级下册第六单元《数量间的加减关系》练习卷及答案
- 通辽市教师招聘考试题及答案
- 唐山市教师招聘笔试题及答案
- 茂名社区工作者招考真题及答案2025
- 养老护理员基础题目及分析
- 26年mRNA靶向药编码抗原分类梳理
- 26年随访患者宣教核心要点手册
- 26年骨肉瘤基因检测与靶向用药关联
- 安全工程师题库及答案
- 红皮病型药疹护理查房
- 药用植物的引种驯化PPT
- 乙二醛填充脱水法在饱水竹漆中的应用
- 曲阜师范大学语文教学与研究(23年上半年)期末考试复习题
- 厦门市民族与宗教事务局补充招考1名非在编人员模拟预测(共500题)笔试参考题库+答案详解
- JJG 1192-2023电动汽车非车载充电机校验仪
- 生产车间日常安全检查表
- GB/T 2831-2009光学零件的面形偏差
- 食品加工与保藏 食品的微波处理课件
- 2B Lesson 15 The mud bath
- 平面与平面平行的判定(公开课课件)
- 铸件尺寸公差ISO806232007中文
评论
0/150
提交评论