Day10--MATLAB程序设计

MATLAB是一个很强大的软件,在自动控制领域也是使用非常广泛,本系列博文将基于控制系统仿真进行,参考书籍《MATLAB/Simulink与控制系统仿真》,该系列博文与笔者的自动控制理论(考研篇)互为补充,详细理论知识点请各位移步自动控制理论(考研篇)系列博客。



10.MATLAB程序设计

10.1 MATLAB程序类型

  1. 在命令行窗口下执行的脚本M文件;
    在命令行下输入并执行,没有输入参数,不返回输出参数;
  2. 可以存取的M文件,即程序文件;
    以.m格式进行存取,包含一连串的MATLAB指令和必要的注解,需要在工作区中创建并获取变量,处理的数据为命令行窗口中的数据,没有输入参数,不会返回参数;
  3. 函数文件;
    函数接收输入参数后执行并输出结果;
    1. 函数定义行:function[out1,out2,…]=filename(in1,in2,…);
    2. 函数体语句:除返回和输入变量这些在function语句中直接引用的变量外,函数体内使用的所有变量都是局部变量,即在该函数返回后,这些变量自动在工作区中清除;

10.2 MATLAB程序流程控制

% 1.顺序程序控制
% 顺序程序控制从程序的首行开始,逐行顺序往下执行,直到程序最后一行;


% 2.分支程序结构
% 分支程序结构的程序根据执行条件是否满足,确定执行方向;
% 分支结构:if-else-end结构、while 结构、switch-case-otherwise结构;

% 2.1 if,else,elseif语句
% 格式1:if-end结构
if 逻辑表达式
	执行语句
end

% 格式2:if-else-end结构
if 逻辑表达式
	执行语句1
else
	执行语句2
end

% 格式3:if-elseif-end结构
if 逻辑表达式1
	执行语句1
elseif 逻辑表达式2
	执行语句2
end
% 实战环境:MATLAB 2020b
% Tips:以下均由MATLAB验证

% 实战1:if条件语句,if_else.m
n=input('n=');
if n<0					% 判断正负
    A='negative'		
elseif isempty(n)==1	% 判断是否为空
    A='empty'
elseif rem(n,2)==0		% 判断奇偶性
    A='even'
else
    A='odd'
end

>> if_else
n=[]
A =
    'empty'
>> if_else
n=4
A =
    'even'
>> if_else
n=-10
A =
    'negative'
% 2.2 switch语句
% 基本格式:
switch 表达式		% 表达式可以是标量可以是字符串
	case 值1
		语句1
	case 值2
		语句2
		...
	otherwise
		语句3
end
% 实战环境:MATLAB 2020b
% Tips:以下均由MATLAB验证

% 实战2:switch_.m
name=input('Please input your name:');
switch name
    case 'willard'
        'willard is fuxi technology CEO'
    case 'chen'
        'chen is fuxi technology CFO'
    case 'zhang'
        'zhang is fuxi technology big BOSS'
    otherwise
        'This people is not found'
end


>>Please input your name:'chen'
>>ans =
    'chen is fuxi technology CFO'
% 3.循环程序结构
% while循环结构:循环体被执行的次数是不确定的;
% for循环结构:循环体被执行的次数是确定的;

% 3.1 for循环语句格式
for 循环变量=起始值:步长:终止值
	循环体
end

% 3.2 while循环语句格式
while 表达式
	循环体
end
% 实战环境:MATLAB 2020b
% Tips:以下均由MATLAB验证

% 实战3:输出九九乘法表
for i = 1:9
    for j = 1:i
        fprintf('%d*%d=%d  ', i, j, i * j)
        if i == j
            fprintf('\n')
            continue
        end
    end
end

1*1=1  
2*1=2  2*2=4  
3*1=3  3*2=6  3*3=9  
4*1=4  4*2=8  4*3=12  4*4=16  
5*1=5  5*2=10  5*3=15  5*4=20  5*5=25  
6*1=6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36  
7*1=7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49  
8*1=8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64  
9*1=9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81  

10.3 MATLAB程序设计原则

  1. %后面的内容是注解,提高程序可读性;
  2. 养成在主程序开头使用clear指令清除变量的习惯,以消除工作区其他变量对程序运行的影响,在子程序中不用clear;
  3. 参数值集中放在程序的开始部分,在语句行之后输入分号使其及中间结果不显示在屏幕;
  4. input指令用来输入一些临时的数据;大于大量参数,通过建立一个存储参数的子程序,在主程序中通过子程序名称进行调用;
  5. 程序尽量模块化,采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部操作;
  6. 利用Debugger来调试程序,设置断点、单步执行、连续执行;
  7. 设置好MATLAB的工作路径;
% 以下是MATLAB程序的基本组成结构

% 说明
清除命令:清除Workspace中的变量和图形,clear,close
定义变量:包括全局变量的声明及参数值的设定
逐行执行命令:指MATLAB提供的运算指令或工具箱提供的专用命令

控制循环:for,if then,switch,while等语句
逐行执行命令

end
绘图命令:将运算结果绘制出来
上一篇:Python面试题_day10


下一篇:T31-Day10技术选型