M文件和流程控制(matlab)..

合集下载

实验三_M_文件及_MATLAB_程序设计与调试

实验三_M_文件及_MATLAB_程序设计与调试

实验三M 文件及MATLAB 程序设计与调试一、实验目的全面掌握在MA TLAB 下进行程序设计的有关问题,具体涉及到M 脚本文件和M 函数文件的编写、全局和局部变量的使用、流程控制结构、提高程序执行效率的设计技术、程序调试等问题。

二、实验内容1、关于M 脚本文件和M 函数文件MATLAB 的M 文件有两类:脚本文件和函数文件。

(1)脚本文件——将原本要在MATLAB 的指令窗口中直接输入的语句,放在一个以.m 为后缀的,称为脚本文件中。

有了脚本文件,可直接在MATLAB 中输入脚本文件名(不含后缀)。

MATLAB 会打开这一脚本文件,并依次执行脚本文件中的每一条语句,这与在MATLAB 中直接输入语句的结果完全一致。

(2)函数文件——它的第一行必须是函数定义行。

M 函数文件由5 部分构成:◆函数定义行◆H1 行◆函数帮助文本◆函数体◆注释注意:在函数文件中,除了函数定义行之外,其它部分都是可以省略的。

但作为一个函数,为了提高函数的可用性,应加上H1 行和函数帮助文本,为了提高函数的可读性,应加上适当的注释。

例如:function y = mean(x)% MEAN Average or mean value.% For vectors, MEAN(X) is the mean value of the elements in X.% For matrices, MEAN(X) is a row vector containing the mean value of each column.[m,n]=size(x);if m==1% Determine whether x is a vectorm=n;endy = sum(x)/m;①函数定义行:function y = mean(x)function 为函数定义的关键字,mean 为函数名,y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。

matlab编程2

matlab编程2
18
第二节 程序控制结构
选择结构
选择结构 是根据给定的条件成立或不成立,分别执 行不同的语句. Matlab 用于实现选择结构的语句有 if -end语句 和 switch-end 语句
19
第二节 程序控制结构
if -end条件语句
单分支结构
if 条件表达式 语句组 end
双分支结构
If 条件表达式

input应用时,注意:
输入字符串时必须带单引号 单引号的输出:两个连续的单引号 若输入的是数、数学表达式,则in不能出现
11
第二节 程序控制结构
disp
数据的输出:disp
disp(X)
输出变量 X 的值,X 可以是数值矩阵或字符串
一次只能输出一个变量

>> A='Hello, Tom!'; >> disp(A) >> B=[1 2 3; 4 5 6; 7 8 9]; >> disp(B)
x=input(‘输入初值x=’);
n=input(‘输入迭代次数=’);
y(1)=x ; for k=1:n x=1/(x+1); y(k)=x;
function y=dd2(x,n) y(1)=x ; for k=1:n x=1/(x+1); y(k)=x; end
end
y
解:程序如下: function y=f(x)

语句组2
……
K=值m? 否 语句组n

语句组m
switch-end语句的 下一句
第二节 程序控制结构
switch-end 语句
关于 switch-end 语句的几点注解:

Matlab课件

Matlab课件

在命令窗口提示符后键入如下命令, 回车: >>example93 运行结果如图9-3所示:
图9-3
6阶拟合结果
三、函数文件
下例给出了一个典型的M文件函数。 function y=average(x) % AVERAGE求向量元素的均值 % 其中,X是向量,Y为计算得到向量元素的均值 % 若输入参数为非向量则出错 % 代码行 [m,n]=size(x); % 判断输入参数是否为向量 if (~((m==1)|(n==1))|(m==1)&(n==1)) % 若输入参数不是向量,则出错 error('Input must be a vector'); end % 计算向量元素的均值 y=sum(x)/length(x);
图9-5
序列的FT和DFT结果
从图9-5可见,序列的离散傅立叶变换DFT的确是其傅立叶变换FT在的N点等间 隔采样。这里做的是16点变换,读者也可尝试对其它的序列做任意点的傅立叶 变换。
第二节
M文件程序流程控制
一、分支结构 在许多情况下,需要根据不同的条件执行不同的语句,在 编程语言里,是通过分支结构实现的。Matlab语言提供的 分支结构有If-Else-End结构、Switch-Case结构、TryCatch结构。 1.If-else-end分支结构 If语句的基本语法结构有三种,分别如下: (1)if 表达式 Matlab语句体 end 关键词if后的表达式确定了判断条件,表达式必须首先计 算,只有当表达式结果为True时,语句体才被执行,否则 跳过if-end结构,执行end后面的语句。
在命令窗口给出向量x、y和阶数fitorder,如下所示: >>x=[0.1 0.14 0.2 0.23 0.34 0.45 0.55 0.6 0.67 0.7 0.8 1]; >>y=[2.2 2.5 3.4 4.4 5.6 6.5 7.0 7.5 8 9 10 11]; >>fitorder=4; 然后调用函数fitdone,即 >>fitdone(x,y,fitorder),回车后,运行结果如图9-4所示:

matlab的程序流程控制实验总结

matlab的程序流程控制实验总结

matlab的程序流程控制实验总结Matlab programming is a powerful tool that can be used to solve complex mathematical problems and analyze data. In order to fully utilize its capabilities, it is important to have a good understandingof program flow control in Matlab. Program flow control refers to the way in which the execution of a program is controlled in order to achieve the desired outcome. One of the most common ways to control the flow of a program in Matlab is through the use of loops. Loops allow you to iterate over a set of data or perform a series of operations multiple times. There are two main types of loops in Matlab: for loops and while loops. For loops are used when youknow the exact number of times you want to repeat a block of code, while loops are used when you want to repeat a block of code until a certain condition is met.在Matlab编程中,程序流程控制是一种强大的工具,可以用来解决复杂的数学问题和分析数据。

2.6 M文件及程序调试

2.6  M文件及程序调试

2012-8-7
2.建立新的M文件 在文本编辑器的文档窗口输入文件内容,输入完毕后, 选择文本编辑器窗口File菜单的Save或Save As命令存 盘,默认名字是Untitled。注意,M文件存放位置一般 是MATLAB缺省的用户工作目录,如果要选择别的目 录,则应该将该目录设定为当前目录或将其加到搜索 路径中,以便于文件查找。 3.运行M文件 输入文件内容并检查后,单击〈F5〉或文本编辑器的 Debug → Save and Run,在出现的Save file as对话 框中,输入文件名**.m,单击“保存”,M文件自动存 盘后运行。
三ቤተ መጻሕፍቲ ባይዱ参数的可调性
MATLAB在函数调用上有一个与一般高级语言不同之处,就 是函数所传递参数数目的可调性。凭借这一点,一个函数可完成 多种功能。在调用函数时,MATLAB用两个永久变量nargin和 nargout分别记录调用函数时的输入实参和输出实参的个数。只 要在函数文件中包含这两个变量,就可以准确地知道该函数文件 被调用时的输入输出参数个数,从而决定函数如何进行处理。
2012-8-7
编写一个函数文件test,比较输入一个参数、两个参
数和三个参数时的结果。 function apple=test(a,b,c) if nargin==1 apple=a; %当只有一个输入实参时,返回参数a elseif nargin==2 apple=a+b; %当有两个实参时,返回参数为a+b elseif nargin==3 apple=a+b+c; %当有三个输入实参时,返回实参a+b+c end
2012-8-7
2012-8-7
二、函数调用
函数文件编制好后,就可以调用函数进行计算了。函数调用 的一般格式为: [输出实参表]=函数名(输入实参表) 需要注意的是,函数调用时各实参出现的顺序、个数,应与 函数定义时形参的顺序、个数一致,否则会出错。函数调用时, 先将实参传递给相应的形参,从而实现参数传递,然后再执行函 数的功能。

第二部分 MATLAB程序设计

第二部分 MATLAB程序设计
调用格式: A=input(提示信息,选项); 注:‘s’选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令 xm=input('What''s your name:','s') 【例2】 求一元二次方程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)] 将该程序以aa.m文件存盘,然后运行aa.m文件。



i=i+1; end if flag n=n+1; prime(n)=m; end end prime %变量prime存放素数
30
三.程序设计
pause 指令使程序运行停止,等待用户按任意键继续; input 指令提示用户从键盘输入数值、字符串或表达 式,并接受输入; disp指令在屏幕上显示字符串; echo on指令显示其后所有执行文件的指令;

y=0; i=1; while 1 %循环的条件为1,即循环条件总是满足的,这是 一个永真循环 f=1/(2*i-1); y=y+f; if y>3 break; end i=i+1; end n=i-1 y=y-f
28
三.程序设计
(二)循环结构
3. 循环的嵌套
如果一个循环结构的循环体又包括一个循环结构,就 称为循环的嵌套,或称为多重循环结构。

多重循环的嵌套层数可以是任意的。可以按照嵌套层 数,分别叫做二重循环、三重循环等。处于内部的循环 叫作内循环,处于外部的循环叫作外循环。

第4章 MATLAB程序流程控制

第4章  MATLAB程序流程控制

第4章 MATLAB程序流程控制
2.switch语句 switch语句根据表达式的取值不同,分别执行不 同的语句,其语句格式为:
第4章 MATLAB程序流程控制
(3) 多分支if语句: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组n end
第4章 MATLAB程序流程控制
第4章 MATLAB程序流程控制
例4-4 输入一个字符,若为大写字母,则输出其对应 的小写字母;若为小写字母,则输出其对应的大写 字母;若为数字字符则输出其对应的数值,若为其 他字符则原样输出。
age is 17>> >> fprintf('age is %d\n',17); age is 17
第4章 MATLAB程序流程控制
例4-2 求一元二次方程ax2 +bx+c=0的根。 程序如下: a=input('a=?'); b=input('b=?'); c=input('c=?'); delta=b*b-4*a*c; x=[(-b+sqrt(delta))/(2*a),(-b-sqrt(delta))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
M文件的扩展名为.mFra bibliotek第4章 MATLAB程序流程控制
1.建立新的M文件 为建立新的M文件,启动MATLAB编辑器有3种方法。 ① 在MATLAB主窗口选择“主页”选项卡,在“文件” 命令组中单击“新建脚本”命令按钮。 ② 在MATLAB命令行窗口输入命令: edit 文件名 启动MATLAB编辑器后,输入M文件的内容并存盘。 ③ 在命令历史窗口选中一些命令(按住Ctrl可同时选 择多条命令),然后从右键快捷菜单中选择“创建 脚本”命令,将会启动MATLAB编辑器,并在编辑 区中加入所选中的命令。

MatlabM文件详解

MatlabM文件详解
3
M文件调试
▪ M文件的调试
▪ 可以在文件编辑器中进行
▪ M语言的文件编辑器不仅仅是一个文件编辑器,还是
一个可视化的调试开发环境
▪ 可以在命令行中结合具体的命令进行
M文件调试
▪ 应用程序的错误
▪ 语法错误
▪ 包括词法或者文法的错误
▪ 运行时的错误
▪ 指程序运行过程中得到的结果不是用户需要的结果
▪ 程序的调试是在程序无法得到正确结果时进行程
MATLAB的工作模式
(1)指令驱动模式
▪ 即在MATLABM命令行窗口下用户输入单行指令时, MATLAB立即处理这条指令,并显示结果,这就 是MATLAB命令行方式。
▪ 缺点:命令行方式程序可读性差,而且不能存 储,当处理复杂问题和大量数据时很不方便。
(2)M文件模式
▪ 将MATLAB语句构成的程序存储成以m为扩展名的 文件,然后再执行该程序文件,这种工作模式 称为程序文件模式。
序修正的唯一手段 ▪ M文件是一种解释型语言,只有在运行过程中才能发现
应用程序的错误
M文件调试
▪ M语言文件编辑器提供Breakpoints菜单进行程序调试
M文件调试
▪ Breakpoints菜单中的命令用来设置各种断点,只有
设置了断点的应用程序才能进行调试 ▪ 提供的自动断点
▪ Stop if Error ▪ Stop if Warning ▪ Stop if NaN or Inf ▪ Stop if All Errors
程序执行的结果将显示于命令窗中
函数文件(相当于C语言的子函数)
▪ 函数文件供主程序文件调用,必须指定函数名和
输入输出参数,并由主程序文件中语句序列给出 一系列操作,从而生成所需数据
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

4.1.2 条件控制语句if,switch
1. if 条件式1 语句段1 elseif 条件式2 语句段2 ... else 语句段n+1 end
当有多个条件时,条件 式1为假再判断elseif的 条件式2,如果所有的条 件式都不满足,则执行 else的语句段n+1,当条 件式为真则执行相应的语 句段; If…else…end结构 也可以是没有elseif和 else的简单结构。
4.1.4 其他流程控制指令(续)
error/lasterr 显示出错信息/显示最新出错原因,终止程序运行 warning/lastwarn 显示警告/显示MATLAB自动给出的最新警告,程序继续运行 %exm R=input('What is your name:','s') %以字符串形式赋给R S=input('How old are you?') %键入数值 pause(3) %暂停3秒 pause %等待用户按任意键 error('You can''t join the army') %显示出错信息 errordlg,warndlg %给出出错、警告对话框
4.1.4 其他流程控制指令(续)
5. input指令 input指令用来提示用户应该从键盘输入数值、字符 串和表达式,并接受该输入。 a=input(‘input a number:’) %输入数值给a b=input('input a number:','s') %输入字符串给b
6. return指令 return指令是终止当前命令的执行,并且立即返回 到上一级调用函数或等待键盘输入命令,可以用来提 前结束程序的运行。
举例:
条件控制语句if举例
cost=10;number=12; if number>8 sums=number*0.95*cost; end,sums
演示
4.1.2 条件控制语句if,switch
2. switch 开关表达式 case 表达式1 语句段1 case表达式2 语句段2 ... otherwise 语句段n end
try 语句段1 catch 语句段2 end
首先试探性地执行语句段 1,如果在此段语句执行 过程中出现错误,则将错 误信息赋给保留的 lasterr变量,并放弃这 段语句,转而执行语句段 2中的语句,当执行语句 段2又出现错误,则终止 该结构。
举例:
try…catch…end结构进行矩阵相乘运算
小结:
1)case后面的表达式可以是元胞数组,只 要开关表达式的值与元胞数组中任一个 元素值相等,就执行其后的语句段。 2)switch指令判断开关表达式的值符合哪 一个case,并执行相应的语句段,执行 完毕,自动跳出switch结构,不需要 break指令。
4.1.3 try... catch... end结构
(1) 将开关表达式依次与case后面的 表达式进行比较,如果表达式1不满足, 则与下一个表达式2比较,如果都不满 足则执行otherwise后面的语句段n; 一旦开关表达式与某个表达式相等, 则执行其后面的语句段。 (2) 开关表达式只能是标量或字 符串。 (3) case后面的表达式可以是标 量、字符串或元胞数组,如果是元胞 数组则将开关表达式与元胞数组的所 有元素进行比较,只要某个元素与开 关表达式相等,就执行其后的语句段。
n=4; a=magic(n); %生成4阶魔方矩阵a m=3; b=eye(3); %生成3阶单位矩阵b
演示
4.1.3 try... catch... end结构
小结: 试探出矩阵的大小不匹配时,矩阵无法相 乘,则再执行case后面的语句段,将a的子 矩阵取出与b矩阵相乘。可以通过这种结构 灵活的实现矩阵的乘法运算。
举例:
例4.2 条件控制语句用于学生的成绩管理
%exm04_02.m clear; %划分区域:满分(100),优秀(90-99),良 好 %(80-89),及格(60-79),不及格(<60) for i = 1:10 a{i} = 89+i; b{i} = 79+i;
演示
例4.2 条件控制语句用于学生的成绩管理
循环控制语句for x=array 循环体
4.1 MATLAB控制流函数(续)
4.1.1 循环控制语句while while 表达式 循环体 end
只要表达式为逻辑真,就执行循环体;一旦 表达式为假,就结束循环。表达式可以是向量 也可以是矩阵,如果表达式为矩阵则当所有的 元素都为真才执行循环体,如果表达式为nan, MATLAB认为是假,不执行循环体。
例4.1 循环控制语句
%a中每一个数字等于所在行列数之和 for i = 1:10 for j = 1:10 a(i,j) = i+j; end end a
演示
例4.1 循环控制语句(续)
注意: end必须和for, while成对出现,不可 省略。特别是出现循环嵌套时,一定要注 意for/while和end的配对问题。
4.1.4 其他流程控制指令
1. break指令 break指令可以使包含break的最内层的for 或while语句强制终止,立即跳出该结构,执 行end后面的命令,break命令一般和If结构结 合使用。 2. continue指令 continue指令用于结束本次for或while循环, 只结束本次循环而继续进行下次循环。
4.1.4 其他流程控制指令(续)
3. pause指令 pause指令用来使程序运行暂停,等待用户 按任意键继续 。 pause(n)指令用于使程序暂停n秒后再继续 执行。 4. keyboard指令 keyboard指令将“控制权”交给键盘,等待 键盘命令,仅当用户输入return指令后,“控 制权”才交回程序。
变量的检测传递和限权使用函数 输入输出变脸检测函数 子函数和私用函数 串演算函数 函数句柄 调试和剖析
4.1 MATLAB控制流函数
4.1.1 for end
循环体被循环执行,执行的次数就是array的 列数,array可以是向量也可以是矩阵,循环变 量x依次取array的流程控制
M文件和流程控制
MATLAB控制流函数 循环控制语句 条件控制语句if,switch try…catch…end结构 其它流程控制指令
M文件和流程控制(续)
M脚本文件和函数文件 M脚本文件和函数文件的比较 局部变量和全局变量 M文件的一般结构
M文件和流程控制(续)
相关文档
最新文档