专题三 Matlab程序流程控制

2021/11/3 22:10:02

本文主要是介绍专题三 Matlab程序流程控制,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 专题三 Matlab程序流程控制
    • 3.1 顺序结构程序
      • 1. 程序和程序设计
      • 2. 程序的三种基本结构
      • 3. 脚本文件和函数文件
      • 4. 文件的建立
      • 5. 顺序结构
    • 3.2 if选择
      • 1. 单分支if语句
      • 2. 双分支if语句
      • 3. 多分支if语句
    • 3.3 Switch选择
    • 3.4 for循环
      • 1. 格式一
      • 2. 格式二
    • 3.5 While循环
        • 1. while
        • 2. 流程转向语句
          • break
          • continue
        • 3. 循环的嵌套
    • 3.6 函数文件的定义与调用
      • 1. 函数文件的基本结构
      • 2. 函数调用
      • 3. 匿名函数
    • 3.7 函数的递归调用
      • 1.函数的嵌套调用
      • 2. 函数的递归调用
    • 3.8 函数参数与变量的作用域
      • 1. 函数参数的可调性
      • 2. 全局变量与局部变量

专题三 Matlab程序流程控制

3.1 顺序结构程序

1. 程序和程序设计

  • 程序

  • 程序设计的而基本步骤

    image-20210925185723063

2. 程序的三种基本结构

  • 顺序结构
  • 选择结构
  • 循环结构

3. 脚本文件和函数文件

Matlab中程序文件的扩展名为.m,因为程序文件也称为M文件

程序文件分为脚本文件和函数文件

  • 脚本文件:可以在命令行窗口直接执行,也叫命令文件
  • 函数文件:定义一个函数,不能直接执行,必须以函数调用的方式来调用它。

4. 文件的建立

脚本文件和函数文件都是一个文本文件,可以用任何文本编辑程序来建立和编辑,默认使用Matlab编辑器

启动Matlab编辑器的方法:

  • 命令按钮创建文件

image-20210925190423538

  • edit命令创建文件

    >> edit test # 在当前文件夹下,创建了一个test.m的文件
    

5. 顺序结构

  • 数据输入

    A = input(提示信息,选项);
    
  • 数据输出

    disp(输出项)
    
    示例
    >> s='Hello World'
    >> disp(s) 
    Hello World
    
  • 程序的暂停

    pause(延迟秒数)

    若要强行终止程序的运行可使用Ctrl+C 命令

3.2 if选择

1. 单分支if语句

语句格式:

if 条件
	语句组
end

image-20210925191745201

说明:

image-20210925191809055

2. 双分支if语句

语句格式:

if 条件
	语句组1
else
	语句组2
end

3. 多分支if语句

语句格式:

if 条件1
	语句组1
elseif 条件2
	语句组2
……
elseif 条件m
	语句组m
else
	语句组n
end

3.3 Switch选择

语句格式:

image-20210925192148521

说明:

  • switch表达式应该是一个其值可以列举的表达式

  • case结果表为switch表达式的取值,当取值有多个时,用单元数据表示。

3.4 for循环

1. 格式一

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

image-20210925170128162

image-20210924200200926

示例一:

for k =[1,3,2,5] 
	k
end

说明:

1.for语句针对向量的每一个元素执行一次循环体
2.退出循环之后,循环变量的值就是向量中最后的元素值	
for k = 1:2:10  # 1 3 5 7 9	
end	k
3.向量为空时,循环体一次也不执行	
for k = 1:-2:10 # 产生一个空向量		
k    
end

2. 格式二

for 循环变量 = 矩阵表达式 # 循环变量为列向量,依次将矩阵的各列元素赋给循环变量,然后执行	
循环体语句
end

示例一:

>> A=[1,2,3,4]
A = 1 2 3 4
>> for i = A	
>i 
>end
执行
>i = 1
>i = 2
>i = 3
>i = 4

示例二:

>> A=[1,2;3,4]
>A=	1 2	3 4
>> for i = A	
>i 
>end
执行
>i = 	1	
		3
>i = 	2	
		4

3.5 While循环

1. while

while 条件	循环体语句end

说明:

  • while语句多用于循环次数不确定的情况,而对于循环次数确定的情况,使用for语句更方便
  • 针对不同情况可选择不同的循环语句,但从功能上讲,两种循环语句可以相互代替

2. 流程转向语句

break

跳出循环体,结束整个循环

continue

结束本次循环,解这进行下一次是否执行循环的判断

3. 循环的嵌套

3.6 函数文件的定义与调用

1. 函数文件的基本结构

function 输出形参表=函数名(输入形参表)# 使用函数文件定义一个函数
注释说明部分
函数体语句

说明:

  • 函数名的命名规则与变量名相同
  • 函数定义时,输入输出参数,都没分配存储空间,所以称为形式参数
    • 输出形参多于一个时,应当用方括号括起来,构成一个输出矩阵。
    • 多个形参时,形参之间用逗号分隔,组成形参表
  • 函数文件名&函数名
    • 函数文件是定义函数的这个文件,函数文件名通常由函数名加上扩展名.m组成,函数文件名与函数名也可以不相同。
      • 当函数文件名与函数名不相同时,matlab将忽略函数名,调用时使用函数文件名。为使用方便,一般建议大家函数文件名和函数名统一。
    • return:结束函数,程序流程跳到调用函数的位置

2. 函数调用

调用格式

[输出实参表]=函数名(输入实参表)

说明:

  • 调用函数时,函数输入输出参数称为实际参数,简称实参

3. 匿名函数

基本格式:

函数句柄变量 = @(匿名函数输入参数)匿名函数表达式
# 函数句柄变量相当于匿名函数的别名
# 利用函数句柄可以间接调用函数
# @是创建函数句柄的运算符

示例:

>> f=@(x,y)X^2+Y^2
f=	@(x,y)X^2+Y^2	
>> f(3,4) # 调用匿名函数
ans = 	
	25

函数句柄

函数句柄变量=@函数名 # 函数可为自定义函数或者内部函数
函数句柄变量=@函数表达式

示例:

>>h=@sin # 给正弦函数重新起了一个名字为 h
h=	@sin	
>>h(pi/2)
ans=	
	1

3.7 函数的递归调用

1.函数的嵌套调用

定义:在一个函数的定义中调用了其他函数

2. 函数的递归调用

定义:一个函数调用它自身称为函数的递归调用

递归: 把一个大型复杂问题层层转化为一个与原问题相似的规模较小的问题来求解

  • 直接递归调用

  • 间接递归调用

3.8 函数参数与变量的作用域

1. 函数参数的可调性

函数所传递参数数目是可调的

在调用函数时,Matlab有了两个预定义变量

  • nargin:记录函数输入实参的个数

  • nargout:记录函数输出实参的个数

2. 全局变量与局部变量

  • 全局变量

定义:作用域是整个Matlab工作空间,所有的函数都可以对她进行存取和修改

定义格式:

global 变量名

示例:

# 建立函数文件wad.m
funciton f=wad(x,y)
global ALPHA BETA
f=ALPHA*x+BETA*y; 
# ALPHA、BETA为 x、y的权值

# 在命令行窗口输入命令并得到输出结果
>>global ALPHA BETA
>>ALPHA=1;
>>BETA=2; 
# 命令行窗口中更改ALPHA、BETA的值,函数文件wad.m中的ALPHA、BETA的值会自动进行修改。
>>s=wad(1,2)
s=	
	5
  • 局部变量:在程序中只在特定过程或函数中可以访问的变量


这篇关于专题三 Matlab程序流程控制的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程