首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【MATLAB 从零到进阶】day4 MATLAB程序设计

【MATLAB 从零到进阶】day4 MATLAB程序设计

作者头像
统计学家
发布2019-04-10 14:54:41
7980
发布2019-04-10 14:54:41
举报

MATLAB程序设计

第一节MATLAB语言的流程结构

MATLAB作为一种程序设计语言,它提供了选择语句结构和循环语句结构,其中选择语句结构又包括:if/elseif条件转移语句结构,switch开关语句结构,try…catch试探语句结构;循环语句结构包括:for循环语句结构和while循环语句结构。除此之外,MATLAB还提供了continue、break、return和pause等流程控制函数

一、选择结构

选择结构的语句有if语句、 switch语句和try语句

1.if/elseif条件转移语句结构

格式一: if 条件 语句组 end 格式二: if 条件 语句组1 else 语句组2 end 格式三: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1 end

【例3.1-1】输入3个实数,判断以这3个数为边长能否构成三角形,若构成三角形,利用海伦公式求其面积。

A=input('请输入三条边:'); if A(1)+A(2)>A(3)&A(1)+A(3)>A(2)&A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2; s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3))); disp(['该三角形面积:' num2str(s)]); else disp('不能构成三角形') end

运行:

请输入三条边:[1 2 3]

不能构成三角形

请输入三条边:[4 5 6]

该三角形面积:9.9216

2.switch/case开关语句结构

switch语句根据变量或表达式的取值不同,分别执行不同的语句。其格式为:

switch 表达式 case 值1 语句组1 case 值2 语句组2 …… case 值m 语句组m otherwise 语句组m+1 end

根据变量 num 的值来决定显示的内容:

num=input('please input a number:'); switch num case -1 disp('i am a teacher'); case 0 disp('i am a student'); case 1 disp('you are a teacher'); otherwise disp('you are a student'); end

3. try…catch试探语句结构

语句格式为:

try 语句组1 catch 语句组2 end

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。

二、循环结构

1. for 循环

格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end

注:其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

2. while循环

格式: while (条件) 循环体语句 end

3. 循环套嵌

例:

,求使得y≤2000的最大正整数n和对应的y值

方法1:

y=0; for i=1:inf y=y+i^2; if y>2000 break; end end n=i-1 y=y-i^2

方法2:

y=0; i=0; while y<=2000 i=i+1; y=y+i^2; end n=i-1 y=y-i^2

三、continue、break、return和pause函数

1. continue函数

continue函数只能用在for或while循环结构的循环体语句中,它的功能是跳过当步循环直接执行下一次循环,通常与if语句结合使用。

2. break函数

break函数也只能用在for或while循环结构的循环体语句中,它的功能是跳出break函数所在层循环,通常与if语句结合使用。

3. return函数

return函数的用法比较灵活,通常用在某个函数体里面,根据需要,可以用在函数体的任何地方,其功能是跳出正在调用的函数,通常与if语句结合使用。

4. pause函数

pause函数用来实现暂停功能,其调用方式和功能如下:

pause %暂停程序的执行,等待用户按任意键继续

pause(n) %暂停程序的执行,n秒后继续,n为非负实数

pause on %开启暂停功能,使后续pause和pause(n)指令可以执行

pause off %关闭暂停功能,不执行后续pause和pause(n)指令。

四、匿名函数(在命令窗口或脚本文件中编辑)

1. 定义格式 匿名函数由@符引导建立,其定义格式为:

f = @ (arg1,arg2,...) [expr]

2. 调用格式 匿名函数的调用格式为:

y=f(arg1,arg2,...) >> f2=@(x,y)sin(x).*cos(y); >> y=f2(pi/8,pi/9) y = 0.3596

五、子函数与嵌套函数

1. 子函数

通常在一个MATLAB主函数的内部会调用一些其他的MATLAB函数,我们把被调用的函数称为该主函数的子函数,子函数可以是MATLAB自带的内部函数,也可以是自编的外部函数;可以是以Function打头的函数,也可以是内联函数和匿名函数。

2. 嵌套函数

把一个或多个子函数放到同一个主函数的函数体内部而构成的函数称为嵌套函数。像循环的嵌套一样,嵌套函数可以是一层嵌套,也可以是多层嵌套,其一般形式如下。

单层嵌套

%一嵌一 function x = A(p1, p2) … function y = B(p3) … end … end %一嵌多 function x = A(p1, p2) … function y = B(p3) … end function z = C(p4) … end … end

多层嵌套

function x = A(p1, p2) … function y = B(p3) … function z = C(p4) … end … end … end

例:

通过嵌套函数的方式编写函数

function y = mainfun(x) % 通过嵌套函数的方式编写函数 y = subfun1(x) + subfun2(x); %子函数1 function y1 = subfun1(x1) y1 = (x1 + 1)^2; end %子函数2 function y2 = subfun2(x2) y2 = exp(x2); end y = subfun3(y); end %%------------------------------------------ % 子函数3 %%------------------------------------------ function y = subfun3(x) y = sqrt(x) - 1; end function y = fibonacci(n) % 生成斐波那契数列的第n项

六、函数的递归调用

例:

生成斐波那契数列的第n 项。

if (n < 0) | (round(n) ~= n) warning('输入参数应为非负整数'); y= []; return; elseif n < 2 y= n; else y= fibonacci(n-2)+fibonacci(n-1); end

七、设置断点进行调试

八. 设置全局变量

为说明全局变量的使用,在ComputeXY函数中定义全局变量a, b, c,程序如下:

function [x,y]=ComputeXY(t)

global a b c %注意变量之间用空格而不是逗号或其它标点隔开

x=cos(a*t);

y=abs(x)+c;

在命令窗口调用时应采用以下语句global a b c a=1.4;b=2;c=0.75; [u,v]=ComputeXY(0:pi/4:pi)

则可获得正确结果

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档