通信原理MATLAB仿真教程第2章 M文件程序设计
MATLAB-程序设计-M文件建立

1、先建立函数M文件fun2.m来定义函数f(x) function f=fun2(x) 1 else if x<=0
f=x^3 else
f=2*x end end
2、再在MATLAB命令窗口输入fun2(2),fun2(0.5), fun2(-1)即可.
MATLAB入门
程序设计
M文件
MATLAB的内部函数是有限的,有时为了研究 某一个函数的各种性态,需要为MATLAB定义新函 数,为此必须编写函数文件. 函数文件是文件名后 缀为M的文件,这类文件的第一行必须是一特殊字 符function开始,格式为:
function 因变量名=函数名(自变量名) 函数值的获得必须通过具体的运算实现,并赋 给因变量.
2x x 1
1、编写函数M文件 function f=fun1(x) if x>1
f=x^2+1 end if x<=1
f=2*x end
2、在MATLAB命令窗口输入fun1(2),fun1(-1)即可.
2) 有两个选择的一般形式是: if (expression1) {commands1} else {commands2} end
例: 设银行年利率为11.25%.将10000元钱存入银行, 问多长时间会连本带利翻一番?
money=10000; years=0; while money<20000
years=years+1; money=money*(1+11.25/100); end years money
运行结果:
years =7 money = 2.1091e+004
3. if-else-end结构
(1)有一个选择的一般形式是: if (expression) {commands} end
实验五 M文件和MATLAB程序设计

实验五 M文件和MATLAB程序设计一、实验目的matlab作为一种高级计算机语言,不仅可以命令行方式完成操作,也具有数据结构、控制流、输入输出等能力,本次实验通过熟悉和掌握m文件的建立与使用方法,以及函数与控制程序流程语句的使用,使学生具备一定的编程和程序调试能力。
1.掌握M文件的使用方法。
2.掌握if语句和switch语句的使用3. 掌握循环语句的使用4. 通过练习理解MATLAB编程方法。
二、实验原理1.m文件用matlab语言编写的程序,称为m文件。
M文件根据调用方式的不同分为两类,命令文件(Script file)和函数文件(Function file)。
区别?2.程序控制结构1)顺序结构2)选择结构(1)if语句a) 单分支if语句b) 双分支if语句c) 多分支if语句(2)switch 语句(3)try语句3)循环结构(1)for 语句(2)while语句(3)break语句、continue语句、return使用,区别?3.函数文件function 输出形参表=函数名(输入形参表)注释说明部分函数体语句三、实验要求1.首先上机练习PPT中各种流程控制语句的有关实例。
2.然后上机练习下面的实验习题。
四、实验习题1.数论中一个有趣的题目:任意一个正整数,若为偶数,则用2除之,若为奇数,则与3相乘再加上1。
重复此过程,最终得到的结果为1。
如:2→13→10→5→16→8→4→2→16→3→10→5→16→8→4→2→1运行下面的程序,按程序提示输入n=1,2,3,5,7等数来验证这一结论。
%classic "3n+1" problem from number theory.while 1n=input('Enter n,negative quits:');if n<=0breakenda=n;while n>1if rem(n,2)==0n=n/2;elsen=3*n+1;enda=[a,n];endaendEnter n,negative quits:3a =3 10 5 16 84 2 12. 编程求满足∑=>m i i 1100002的最小m 值。
第二讲MATLAB的程序设计和M文件

第二讲MATLAB的程序设计和M文件在MATLAB中,程序设计主要是通过编写和运行M文件来实现。
M文件是MATLAB的主要代码文件,用于实现不同功能的程序,可以包含变量定义、算法实现、函数调用和图形绘制等。
下面将介绍MATLAB的程序设计和M文件的基本知识。
MATLAB的程序设计主要包括如下几个方面:1.变量和数据类型:在M文件中,可以使用不同的变量类型存储数据,如整型、浮点型、字符型等。
不同的变量类型在MATLAB中有不同的表示方法和功能。
2.运算和表达式:在M文件中,可以使用常见的数学运算符(如加减乘除、指数等)进行计算。
同时,也可以使用逻辑运算符(如与、或、非等)进行逻辑运算。
3. 条件语句:在M文件中,可以使用条件语句实现根据不同的条件执行不同的操作。
MATLAB中的条件语句主要有if语句和switch语句,通过判断条件的真假来决定执行路径。
4. 循环语句:在M文件中,可以使用循环语句实现对一段代码的重复执行。
MATLAB中的循环语句主要有for循环、while循环和do-while循环。
5.函数的定义和调用:在M文件中,可以通过定义函数来实现特定功能的封装。
函数可以包含输入参数和输出参数,通过参数的传递来实现数据的交互和函数的调用。
1.M文件的命名和保存:M文件的命名应该具有描述性,以体现文件中代码的功能。
M文件的保存格式是以.m为文件扩展名。
2.M文件的结构:在M文件中,一般会包含变量定义、函数定义和主程序等部分。
变量定义部分用于声明和初始化变量,函数定义部分用于定义自定义函数,而主程序部分用于调用函数和执行主要功能。
3.代码注释:为了提高代码的可读性和可维护性,需要在M文件中添加注释。
注释可以用于解释代码的目的和思路,以及描述变量、函数和算法等的作用和实现方法。
4.代码风格:为了代码的一致性和可读性,需要遵循一定的代码风格规范。
例如,可以在操作符周围留有空格,使用一致的缩进和命名规则,避免使用不必要的缩写等。
第2章 MATLAB程序设计(通信10)

词,必须遵循如下形式:
function 输出形参表=函数名 (输入形参表)
2. 函数名的命名规则与变量名相同。输入形参
为函数的输入参数,输出形参为函数的输出参
数。当输出形参多于一个时,则应该用方括号 括起来。 3. m函数文件的文件名必须是<函数名> . m。 4. 程序中的变量均为局部变量,不保存在工 作空间中。其变量只在函数运行期间有效。
五、文件操作
matlab文件输入、输出(I/O)函数允许把其它格式 的数据文件直接读进matlab,它是以c语言文件I/O函 数为基础的。
1.
打开和关闭文件(fopen, fclose)
格式:fid=fopen(‘数据文件’,‘r’) ‘r’ —— 读 ‘w’ —— 写 ‘a’ —— 附加 ‘rt’ —— 读写
153
while — end 循环
while循环将循环体中的语句循环执行不定次数。 语法为: while 表达式
循环体语句 end
表达式一般是由逻辑运算和关系运算以及一般运算组 成的,以判断循环的进行和停止;只要表达式的值非0, 继续循环;直到表达式值为0,循环停止。
例:用while循环求1~100间整数的和
例:编写m函数, 计算分段函数值 Y=
x (x<1) 2x-1 (1<x<10) 3x-11 (x>=10)
try 语句
try的作用是让Matlab尝试执行一些语句, 执行过程中如果出
错, 则执行catch部分的语句.
try一般与catch连用,表示选择判断。 try
尝试执行的语句块,组命令1总被执行,错误时跳出此结构 catch 出错后执行的语句块,仅当组命令1出现错误时组命令2才 被执行 end
专题2 MATLAB中 M文件与程序流程的控制

专题2 MATLAB中 M文件与程序流程的控制1.2 M文件简介一般地,在命令窗口,用户可以使用键盘逐条键入Matlab命令,按下回车键后,Matlab就执行该命令并显示结果.用这种方式费工费时,难以实现复杂的功能.M文件是由Matlab的命令组成的可在Matlab环境下运行的磁盘文件,该文件的扩展名为m. M 文件可以在Matlab的程序编辑器(Matlab Editor/Debugger)中完成编辑和调试工作.M文件若仅由Matlab 命令组成,称为命令文件,命令文件不带输出和输入参数,只是一些命令的组合;若带有输出和输入参数的函数,称为函数文件.【例1.11】M文件建立、编辑及运行在命令窗中依次选File/New/M-file命令,打开编辑窗口,会生成一个空白文件,此时在Matlab中输入语句,如下所示.% This is my first M-script filet=pi*(0:0.001:1);x=sin(t).*sin(10*t);comet(t,x)存入磁盘并取名为move.m,在Matlab命令窗口中键入move,按回车键后将会出现质点沿曲线运动的效果,请读者自己试试.comet和comet3是两个产生质点沿曲线运动的指令,前者用于生产二维平面上质点运动效果,后者用于质点三维运动,详情可使用help查询.读者可自行设计一个质点沿空间螺旋线轨迹运动三次的M文件.这里是一个命令文件的例子.M文件可以多次运行、修改和调试,为解决复杂问题提供了方便.1.2 Matlab 函数文件编写若某一功能的程序段需要反复使用,或者程序运行时有一些控制参数要调整,这时使用Matlab的函数功能更方便.函数文件有如下特征:• 函数文件的第一行必须包含关键字function,命令文件没有这种要求;• 第一行必须指定函数名、输入变量(在圆括号内)和输出变量(在方括号内);• 函数头与函数体之间可以有多个以符号“%”开始的注释段,说明函数的功能和使用方法.当执行命令 help <文件名> 时,将显示这些注释,直到遇到第一个非注释行为止(注释段可以省略);• 函数体语句下面是一个求向量均值和标准差的名为stat.m的函数文件.function [mean,stdev] = stat(x)%[mean,stdev] = stat(x)%STAT Interesting statistics.%For vectors x, [mean,stdev] return the mean value and%the standard deviation of vectors x.n = length(x); %length of xmean = sum(x) / n;stdev = sqrt(sum((x - mean).^2)/n);在命令窗口键入:w=1:6;[g,h]=stat(w)输出结果:g =3.5000h =1.7078对上述的函数文件stat.m,作以下几点说明:1.由关键字function,函数名sata,输入变量x,输出变量mean和stdev组成的第一行称为函数定义行.多个输入(输出)变量之间用逗号分隔;当函数无输出变量时,输出参数项空缺(等号也省略),或用空的中括号表示,如:function ctrbul(x)function [ ]=ctrbul(x)2.该文件由百分号“%”开头的从第二行到第五行构成了M文件的帮助信息;3.函数文件中除了上述部分之外的文本称为函数体,它们是文件执行计算或其他实质性命令的主体;4.调用该函数时应使用它的存储文件名,所以该函数的存储文件名最好与其函数名一致,否则,调用时会有麻烦.1.3 循环与控制Matlab 提供几种控制程序流程的语句(命令),这些语句可分为两类,一类可称为循环语句,常用的有for循环,while循环;另一类称为条件控制语句,常用的有switch结构和if结构.1. for循环for循环的基本作用是以预定的次数重复执行一组特定的命令,for循环的一般形式是:for k = start:incr:overcommandsend其中,赋值给k的变量start、incr、over分别是循环初值、循环步长和循环终值,当incr = 1时,可以省略. k从初值start开始,每执行一遍语句体commands后就成为k+incr,并将该值赋给k,直至k≥ over便退出循环,执行end后面的语句.为提高程序运行效率,一般而言,要尽量减少循环,以对数组的整体运算和赋值替代.如下两个方法都能生成相同的数组y,但方法2的效率要高.方法1:按循环生成数组yfor t=1:5000y(t) = sin(2*pi*t/10);end方法2:利用数组运算生成数组y,效率比方法1要优.t = 1:10000;y = sin(2*pi*t/10);2. while循环while循环常用于事先不能确定次数的循环,其一般形式是:while expression(控制表达式)commandsend其中,控制表达式(expression)是由关系运算符连结的表达式,当该表达式的值为真时,就执行while和end语句之间的命令串(commands).【例1.12】测试机器零阈值的大小%测试机器零阈值的大小%初始化EPS为1num=0;EPS=1;while(1+EPS)>1EPS=EPS/2;num=num+1;endnum,EPS该程序在最后在num=53时停止,EPS最终结果为:1.1102e-016.3. if结构if条件语句的调用格式是:if expression_1statements_1elseif expression_2statements_2elsestatements_3endif语句根据逻辑表达式的值来确定执行哪一个语句体. 当条件表达式expression_1为真时,执行语句体statements_1,执行完后,跳出循环结构;当expression_1为假时,检验expression_2的逻辑值,为真时,执行语句体statements_2,而后跳出循环. 而当两个语句体的值都为假时,执行else语句体statements_3.一般地,有两个选择的if结构是:if expressionstatementselsestatementsend在这里,如果expression为真,则执行第1组命令,然后跳出循环;如果表达式是假,则执行第2组命令.if语句最简单的用法是:if expressionstatementsend如果expression为真,则执行statements,跳出循环;否则,执行end的后续命令.【例1.13】演示if的程序,检测输入数据.score=input('Please input your score:');if score>=0 && score<60disp('you must work harder!');elseif score>=60 && score<80disp('Not bad!');elseif score>=80 && score<90disp('Great!');elseif score>=90 && score<=100disp('Excellent!');elsedisp('Are you kidding?');end其中,input函数为提示用户输入,将输入结果赋给变量score,缺省为数字.4. switch 结构switch 语句用于多个条件的判断,它根据变量或表达式的值分别执行不同的命令. 该语句的语法调用格式如下:switch expressioncase case_1,commands_1case case_2,commands_2……case case_k,commands_kotherwise,commandsend当expression 的值为case_k 时,执行case_k 下相应的命令commands_k ,否则执行 otherwise 下面的语句commands .【例1.14】生成一个在[0, 6]上的随机数,以此作为掷骰子出现的点数,出现1,3,5显示奇数,出现2,4,6显示偶数,出现0则显示错误.disp('Play dice,please!') %提示输入信息Num=round(6*rand) %利用round 函数产生在[0,6]上服从均匀分布的随机数switch Numcase {1,3,5},disp('Odd')case {2,4,6},disp('Even')otherwise,disp('You are out!')end5. break 结构break 是一种特殊的控制结构,它与if 指令判别的配合使用可以强制终止for 循环和while 循环. 请读者执行下面的一段程序,观察变量p 和k 的值.for k=0:2:5r = 2*k;p = 2*rif p > 3breakendendp,k【例1.15】以下的级数可以计算π的近似值1111(1)4135721n n -⎛⎫--+-+++ ⎪-⎝⎭写一个Matlab 的函数pifun.m 来计算该级数,其中,n 为函数的输入变量,对于固定的n ,函数输出π的近似值.第一种方法:使用for循环实现:function mypi=pifun(n)mypi=0;for k=1:nmypi=mypi+(-1)^(k-1)/(2*k-1);endmypi=4*mypi;第二种方法:使用while循环实现:function mypi=pifun(n)mypi=0;i=0;while k<nk=k+1;mypi=mypi+(-1)^(k-1)/(2*k-1);endmypi=4*mypi;第三种方法:使用递归实现function mypi=pifun(n)%mypi=pifun(n)if n==1mypi=4;elseif n>1mypi=pifun(n-1)+4*(-1)^(n-1)/(2*n-1);% 递归elseerror('wrong input parameter!')end第四种方法:使用向量运算function mypi=pifun(n)%mypi=pifun(n)k=1:n;s=4*(-1).^(k-1)./(2.*k-1);%向量元素除以向量元素,除法前面一定要加" ."mypi=sum(s);第五种方法:使用符号数列和运算function mypi=pifun(n)syms t; % 定义t为符号变量s=4*symsum((-1).^(t-1)./(2.*t-1),1,n);% 符号数列求和mypi=subs(s,s);%将符号变量s值为双精度浮点型数据输出在Command Window中依次调用这五个函数,并使用tic和toc来得到它们之间的指令运行时间,如:tic, pifun(10000);toc可以发现,使用第四种方法,即向量运算,效率最高,其次是使用for和while循环,数列求和因为使用符号计算(详见1.5),效率比较低,但精度也最高,递归调用效率最低.Matlab规定,递归调用函数最大次数为500次,否则会出错.因此使用第三种方法时,n最大只能取500,否则函数报错,出错信息为:??? Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N)to change the limit. Be aware that exceeding your available stack space can crash Matlab and/or your computer.可以使用:set(0,'RecursionLimit',N)将最大允许递归次数修改为N.。
Matlab 实验2-m文件程序设计

实验2. m文件程序设计一、实验目的1.通过练习理解matlab编程方法;2.掌握分支结构程序设计思路;3.掌握循环结构程序设计思路。
二、实验环境1.计算机2.matlab7.1三、实验说明1.熟悉matlab7.1运行环境,正确操作,认真观察;2.实验学时:2学时;3.学会使用help;4.编写程序前先写出程序的流程图框架;5.自主编写调试程序直到正确为止,必要时参考相关资料,;6.保存整理实验结果,提交实验报告。
四、实验内容1. 输入一个百分制成绩,要求输出成绩等级为:A、B、C、D、E,其中90-100为A;80-89为B;70-79为C;60-69为D;60以下为E1)用if或switch语句实现;2)输入百分制成绩后要判断成绩的合理性,对不合理的成绩要输出出错信息提示,比如:输入成绩不能大于100。
3)程序保存名为sy3加上本人学号程序:score=input('请输入分数:');if(score>100)|(score<0)error('分数超出范围,请输入0-100间的值')endswitch floor(score/10)case{0,1,2,3,4,5}disp('E');case{6}disp('D');case{7}disp('C');case{8}disp('B');case{9}disp('A');otherwisedisp('wrong');End结果:请输入分数:56E请输入分数:66D请输入分数:76C请输入分数:86B请输入分数:96A请输入分数:101??? Error using ==> sy3200912512分数超出范围,请输入0-100间的值Error in ==> sy3200912512 at 3error('分数超出范围,请输入0-100间的值')2.某公司员工的工资计算方法如下:(1)工作时数超过120小时者,超过部分加发15%;(2)工作时数低于60小时者,扣发700元;(3)其余按每小时84元计发。
第二讲 M文件及函数的编写

case{2,4,6}
disp(‘even numbers’)
otherwise
disp (‘ mistake!’)
end2021/5/27
14
M文件及函数的编写
分支语句和C语言的区别:
当开关表达式的值等于某表达式,执行该语句 后结束该结构,不用 break otherwise 语句,不是 default 程序的执行结果和各个case顺序无关
3. 交互式输入Байду номын сангаас
(1) 用户输入提示命令input
M文件及函数的编写
input 命令用来接收用户从键盘输入数据、 字符串或表达式,并接收输入值。其常用格 式: >> R=input (‘How many apples’)
运行此命今后,将给出文字提示,并等待键盘 输入。
>> R=input(‘what is your name ?’,’s’)
新建M文件 一般过程 编写指令
调试运行
M文件及函数的编写
用户在编制此类文件时,只需把所要执行的命令 按行编辑到指定的文件中,程序运行时, MATLAB按行执行这些指令。
2021/5/27
4
几点规则:
M文件及函数的编写
● 建立好的书写风格,保持程序的可读性。
● m为文件的扩展名,在低版本的MATLAB中 还要注意文件名不超过8位,文件名和变量的命 名规则相同。
2.在command window中调用:num=my_fact(11)
M20A21T/5/2L7 AB函数为:prod(1:1000)
24
使用tic和toc函数, 测试一下该函数的运行效率。 显式程序运行的时间。
tic; num=my_fact(500); toc
通信原理matlab课程设计

通信原理matlab课程设计一、课程目标知识目标:1. 理解通信原理的基本概念,掌握调制解调、信号传输、信道编码等基本知识点;2. 学会运用MATLAB软件进行通信系统的仿真和分析;3. 掌握通信系统性能指标的计算方法,并能够运用MATLAB进行验证。
技能目标:1. 能够运用MATLAB软件设计简单的通信系统模型;2. 学会利用MATLAB进行数据处理、图像绘制和结果分析;3. 提高实际操作能力,培养解决实际通信问题的思维和方法。
情感态度价值观目标:1. 培养学生对通信原理课程的兴趣,激发学习热情;2. 培养学生的团队协作精神,提高沟通与表达能力;3. 引导学生树立正确的价值观,认识到通信技术在我国经济社会发展中的重要地位。
课程性质:本课程为通信原理课程的实践环节,旨在通过MATLAB软件的运用,加深学生对通信原理知识的理解和掌握。
学生特点:学生已经掌握了通信原理的基本知识,具备一定的MATLAB编程基础,但实际操作能力和问题解决能力有待提高。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重理论与实践相结合,提高学生的实际操作能力和问题解决能力。
在教学过程中,关注学生的情感态度价值观培养,提高学生的学习兴趣和积极性。
二、教学内容1. 通信原理基本概念回顾:信号与系统、傅里叶变换、采样定理等;2. 调制解调技术:模拟调制(AM、FM、PM),数字调制(ASK、FSK、PSK、QAM);3. 信号传输与信道:信号传输特性、信道模型、信道编码;4. 通信系统性能分析:误码率、信噪比、带宽等性能指标;5. MATLAB软件操作与仿真:基本命令、数据类型、图形绘制、程序设计;6. MATLAB在通信系统中的应用:设计调制解调器、信道编码器、信号分析仪等;7. 实践项目:分组进行通信系统仿真,分析并优化系统性能。
教学内容安排与进度:第一周:通信原理基本概念回顾,MATLAB软件基本操作;第二周:调制解调技术,实践项目一(调制解调器设计);第三周:信号传输与信道,实践项目二(信道编码器设计);第四周:通信系统性能分析,实践项目三(信号分析仪设计);第五周:总结与成果展示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if 条件 语句组 end 当条件成立时,则执行语句组,执行完之后继续执 行if语句的后继语句,若条件不成立,则直接执行if 语句的后继语句。 (2) 双分支if语句
条件 语句组1 else 语句组2 end 当条件成立时,执行语句组1,否则执行语句组2,语句 组1或语句组2执行后,再执行if语句的后继语句。 if
2、switch语句 switch语句根据表达式的取值不同,分别执行不同的语句, 其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 …… case 表达式m 语句组m otherwise 语句组n end
switch语句执行过程
例 用switch结构来实现学生成绩的管理。
3、try语句 MATLAB从5.2版开始提供了try语句,这是一种试探性 执行语句。语句格式为: try 语句组1 catch 语句组2 end try语句先试探性执行语句组1,如果语句组1在执行过 程中出现错误,则将错误信息赋给保留的lastter变量,并 转去执行语句组2.。这种试探性执行语句是其他高级语言 所没有的。
2.1 M文件
例2-1 分别建立命令文件和函数文件,将华氏温度f转化成摄 氏温度c。
转换公式为:
程序1: 首先建立命令文件并以文件名f2c.m存盘。 clear; %清除工作空间中的变量 f=input(‘Input Fahrenheit temperature :’); c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行 该命令 文件,执行情况为: Input Fahrenheit temperature: 73 c= 22.7778
例 一个三位数个位数字的立方和等于该数本身,则称 该数为水仙花数。输出全部水仙花数。
程序如下: 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 输出结果为: 153 370 371 407
例2-2 输入x,y的值,并将它们的值置换后输 出。 程序如下: x=input(‘Input x please.’); y=input(‘Input y please.’); z=x; x=y; y=z; disp(x); disp(y);
程序输出为: Input x please.[12,3,3,4;43,6,3,-54] Input y please.1:8 1 2 3 4 5 6 7 8 12 3 43 6 3 4 3 -54
第2章 M文件程序设计
MATLAB不仅可以在命令行中逐行输入命 令,然后依次执行,而且还可以像C、 FORTRAN等高级语言一样进行程序设计。 在MATLAB程序设计中,可以充分利用 MATLAB数据结构的特点,从而使程序结构 简单,提高编程效率。
2.1 M文件
2.1.1 M文件概述
M文件是由MATLAB语句(命令或函数)构成的ASCII码文 本文件,文件名必须以 “.m”为扩展名 。 两种形式:命令文件(Script File)和函数文件(Function File)。
程序如下: clear; for i=1:10; a{i}=89+i; b{i}=79+i; c{i}=69+i; d{i}=59+i; end; c=[d,c]; Name={'Jack','Marry','Peter','Rose','Tom'}; Mark={72,83,56,94,100};Rank=cell(1,5); S=struct('Name',Name,'Marks',Mark,'Rank',Rank);
输出结果为: Enter a number (end in 0): 45 Enter a number (end in 0): 3 Enter a number (end in 0): 43 Enter a number (end in 0): 54 Enter a number (end in 0): 0 sum= 145 mean= 36.2500
0
0
0
0
(3) 多分支if语句 if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end
语句执行过程如图所示,可用于实现多分支选择结构。
例2-5 求一元二次方程ax+bx+c=0的根。
由于MATLAB能进行复数运算,所以不需要判断方程的判别式,而直 接根据求根公式求根。
2.2.3 循环结构 循环是指按照给定的条件,重复执行指定的 语句,这是一种十分重要的程序结构。MATLAB 提供了两种实现循环结构的语句: for语句和while语句。 1、for语句 for语句的格式为: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end
其中表达式1的值循环变量的初值,表达式2的值为步长,表达式 3的值为循环变量的终值。步长为1时,表达式2可以省略。
打开已有的M文件,也有3种方法: (1)菜单操作。从MATLAB主窗口的File菜单中选则 Open命令,则屏幕出现Open对话框,在Open对话 框中选中所需打开的M文件。 (2)命令操作。在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件。 (3)命令按钮操作。单击MATLAB主窗口工具栏上 的Open File命令按钮,再从弹出的对话框选择所需 打开的M文件。
流程图如下:
程序如下: 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))]); 程序输出为: a=?4 b=?78 c=?54 x1=-0.7188,x2=-18.7812 再一次运行程序后的输出为: a=?23 b=?-6 c=?51 x1=0.13043+1.4834i,x2=0.13043-1.4834i
3、break语句和continue语句 与循环结构相关的语句还有break语句和 continue语句。它们一般与if语句配合使用。 break语句用于终止循环的执行。挡在循环体 内执行到该语句时,程序将跳出循环,继续执行 循环语句的下一语句。 continue语句控制跳过循环体中的某些语句。 当在循环体内执行到该语句时,程序将跳过循环 体中所有剩下的语句,继续下一次循环。
用命令whos查看工作空间中的变量。这时会发现函数参数c,f未 被保留在工作空间中,而x,y保留在工作空间中。
①
②
③
2.1.2 M文件的建立与打开 启动MATLAB文本编辑器的方法有3种: 菜单操作。从MATLAB主窗口的File菜单中 选择New菜单项,再选择M-file命令,屏幕 上将出现MATLAB文本编辑器窗口。 命令操作。在MATLAB命令窗口输入命令 edit,启动MATLAB文本编辑器后,输入M 文件的内容并存盘。 命令按钮操作。单击MATLAB主窗口工具栏 上的New M-File命令按钮。
例 从键盘输入若干个数,当输入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
例 定义一个1×10的行矢量A,当变量P大于5时,A中所有元 素均为0;当P小于等于5时,A中所有元素均为1。编程实现。
程序如下: P=input('请输入P的值'); if P>5 A=zeros(1,10) else A=ones(1,10) end 输入7; 输出结果为: A= 0 0 0 0 0 0
用命令whos查看工作空间中的变量,会发现c,f仍然保留在工作空间中
程序2: 首先建立函数文件f2c.m。 function c=f2c(f) c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。 clear; y=input(‘Input Fahrenheit temperature :’); x=f2c(y) 输出情况为: Input Fahrenheit temperature : 70 c= 21.1111 x= 21.1111
例 请思考下列程序及其运行结果,说明原因。 a=3;b=6; for i=1:3 b==b+1 if i<2 continue end a=a+2 end
a和b的值变化情况: b= 7 b= 8 a= 5 b= 9 a= 7
程序说明: (1) 当if条件满足时,程序将不再执行 continue后面的语句,而是开始下一次的 循环。 (2) continue语句常用于循环体中,与if 一起使用。
disp(['学生姓名 ',' 得分 ',' 等级']);disp('') for i=1:5; disp([S(i).Name,blanks(6),num2str(S(i).Marks),bl anks(6),S(i).Rank]); end 运行结果为: 学生姓名 得分 等级 Jack 72 及格 Marry 83 良好 Peter 56 不及格 Rose 94 优秀 Tom 100 满分