第四章 Matlab编程基础a
第四章
MATLAB编程基础 MATLAB编程基础
本章详细讲解利用M语言进行编程的方法 讲述的主要内容: 流程控制 脚本文件 函数文件 子函数 私有函数 M文件的调试
第四章 Matlab编程基础a
MATLAB编程基础( MATLAB编程基础(续) 编程基础4.1 概述 4.2 流程控制 4.3 脚本文件 4.4 函数文件 4.5 M文件调试 4.6 M文件性能分析 4.7 小结
第四章 Matlab编程基础a
4.1 概述MATLAB的工作模式 指令驱动模式 通常MATLAB以指令驱动模式工作,即在MATLABM 命令行窗口下用户输入单行指令时, MATLAB立 即处理这条指令,并显示结果,这就是MATLAB 命令行方式。 命令行方式程序可读性差,而且不能存储,当 处理复杂问题和大量数据时很不方便。 M文件模式 将MATLAB语句构成的程序存储成以m为扩展名的 文件,然后再执行该程序文件,这种工作模式 称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗 口只允许一次执行一行上的一个或几个语句。
第四章 Matlab编程基础a
概述( 概述(续)MATLAB通过M语言来实现完整的编写应用程序的能力 M语言 M语言是一种解释性语言,利用该语言编写的代码 仅能被MATLAB接受,被MATLAB解释、执行。 M语言文件可以分为脚本文件和函数文件 一个M语言文件就是由若干MATLAB的命令组合在一 起构成的。 M语言文件是标准的纯文本格式的文件,其文件扩 展名为.m。 使用M文件可以将一组MATLAB命令组合起来,通过 一个简单的指令就可以执行这些命令。
第四章 Matlab编程基础a
概述( 概述(续)MATLAB提供了meditor编辑器编辑M文件 在MATLAB命令行窗口中键入指令edit,则可启动 meditor编辑器 >> edit
第四章 Matlab编程基础a
概述( 概述(续)通过“File”菜单中的“New”子菜单下的“M-file”命令 来启 动meditor编辑器
直接单击 MATLAB用户界面工具栏上的新建按钮 来启动meditor编辑器
第四章 Matlab编程基础a
概述( 概述(续)M文件有两类 独立的M文件 —— 脚本(Scripts) 可调用M文件 —— 函数(Functions)
第四章 Matlab编程基础a
MATLAB编程基础( MATLAB编程基础(续) 编程基础4.1 概述 4.2 流程控制 4.3 脚本文件 4.4 函数文件 4.5 M文件调试 4.6 M文件性能分析 4.7 小结
第四章 Matlab编程基础a
4.2 流程控制程序流程控制包含控制程序的基本结构和语法 结构化的程序主要有三种基本的程序结构顺序结构 指所有组成程序源代码的语句按照由上至下的次序依次执行, 直到程序的最后一个语句。 选择结构 依照不同的判断条件进行判断,然后根据判断的结果选择某 一种方法来解决某一个问题。 循环结构 就是在程序中某一条语句或多条语句重复多次的运行。
MATLAB语言的程序结构与其它高级语言是一致的,分 为顺序结构、选择结构、循环结构
第四章 Matlab编程基础a
流程控制( 流程控制(续)4.2.1 选择结构 4.2.2 循环结构 4.2.3 break语句和continue语句 4.2.4 提高运算性能
第四章 Matlab编程基础a
4.2.
1 选择结构当判断某一条件是否满足,根据判断的结果来选择 不同的解决方法时,就需要使用选择结构 MATLAB的条件判断可以使用if语句或者switch语句
第四章 Matlab编程基础a
4.2.1 选择结构4.2.1.1 if语句 if语句的三种基本语法结构if(关系运算表达式) MATLAB语句 end if(关系运算表达式) MATLAB语句A else MATLAB语句B end if(关系运算表达式a) MATLAB语句A elseif (关系运算表达式b) MATLAB语句B else (关系运算表达式c) … end
if-elseif-else的语句结构可以 嵌套使用if(关系运算表达式a) if (关系运算表达式b) MATLAB语句A MATLAB A else MATLAB语句B end else if (关系运算表达式c) MATLAB语句C else MATLAB语句D end end
第四章 Matlab编程基础a
选择结构( 选择结构(续)4.2.1.2 switch语句 switch语句用于处理多分支的选择switch(表达式) case 常量表达式a:MATLAB语句A case 常量表达式b:MATLAB语句B … case 常量表达式m:MATLAB语句M otherwise:MATLAB语句N end 在MATLAB的switch语句中,程序仅仅执行符合条件 的case分支 如果需要对多个条件使用同一个case分支时,则需要 使用元胞数组与之配合
第四章 Matlab编程基础a
4.2.2 循环结构在MATLAB中,包含两种循环结构 循环次数不确定的while循环 循环次数确定的for循环
第四章 Matlab编程基础a
循环结构( 循环结构(续)1、while循环结构 while语句可以实现“当”型的循环结构 格式 while(表达式) while MATLAB语句 end特点是先判断循环条件,当循环条件成立, 即表达式运算结果为“真”,再执行循环体 在循环过程中一定要有能够改变关系表达式 或者布尔类型变量的值
第四章 Matlab编程基础a
循环结构( 循环结构(续)2、for循环结构 使用for语句循环需要预先知道循环体执行的次 数 格式 for index=start:increment:end MATLAB语句 endindex的取值取决于start和end的值 在for循环语句中,不仅可以使用行向量进行循环迭代 的处理,也可以使用矩阵作为循环次数的控制变量 循环的索引值将直接使用矩阵的每一列,循环的 次数为矩阵的列数
第四章 Matlab编程基础a
break语句和continue语句 语句和continue 4.2.3 break语句和continue语句break语句和continue语句的基本功能当break语句使用在循环体中的时候,其作 用是能够在执行循环体的时候强迫终止循环, 即控制程序的流程,使其提前退出循环 使用方法: break; continue语句出现在循环体中的时候,其作 用是能够中断本次的循环体运行,将程序的 流程跳转到判断循环条件的语句处,继续下 一次的循环 使用方法: continue;
第四章 Matlab编程基础a
4.2.4 提高运算性能M语言和其他的高级语言不同,由于采 用了解释型语言,其执行效率低于编译 性语言 提高运算性能 向量化运算 预分配存储空间 MATLAB加速器
第四章 Matlab编程基础a
提高运算性能( 提高运算性能(续)1、向量化运算 向量化运算不要使用循环
结构操作矩阵的元素, 应直接使用矩阵元素的索引或者矩阵 运算的函数,即尽量将使用while循环 或者for循环的语句结构转换成等价的 向量或者矩阵运算
第四章 Matlab编程基础a
提高运算性能( 提高运算性能(续)2、预分配存储空间进行内存变量存储空间的预分配 内存预分配函数数据类型数值数组 元胞数组 zeros cell
函数
例子Y=zeros(1,10000) Y=cell(2,3) Y{1,3}=zeros(1:10000) Y{2,3}=‘string’ Y=repmat(struct(field,value),2,3)
结构数组
struct、repmat
第四章 Matlab编程基础a
提高运算性能( 提高运算性能(续)例4-11 disp([char(10),'使用内存预分配:']) pre_allo=zeros(10000,1); tic for I=1:10000 pre_allo(I)=rand(1); end toc disp([char(10),'不使用内存预分配:']) tic for J=1:10000 not_pre_allo(J)=rand(1); end toc