Kunming University of Science & TechnologyC.1 信号分析基础 -1/24
一,MATLBA程序的基本设计原则
1、%后面的内容是程序的注解,要善于运用注解使程序更具可读性。
2、养成在主程序开头用 clear指令清除变量的习惯,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用 clear。
3、参数值要集中放在程序的开始部分,以便维护。要充分利用
MATLAB工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中间结果不在屏幕上显示,以提高执行速度。
4,input指令可以用来输入一些临时的数据;而对于大量参数,则通过建立一个存储参数的子程序,在主程序中用子程序的名称来调用。
5、程序尽量模块化,也就是采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部的操作。
6、充分利用 Debugger来进行程序的调试(设置断点、单步执行、
连续执行),并利用其他工具箱或图形用户界面( GUI)的设计技巧,将设计结果集成到一起。
7、设置好 MATLAB的工作路径,以便程序运行。
Kunming University of Science & TechnologyC.1 信号分析基础 -2/24
Kunming University of Science & TechnologyC.1 信号分析基础 -3/24
8,MATLAB程序的基本组成结构
%说明清除命令:清除 workspace中的变量和图形( clear,close)
定义变量:包括全局变量的声明及参数值的设定逐行执行命令:指 MATLAB提供的运算指令或工具箱
… … … 提供的专用命令控制循环,包含 for,if then,switch,while等语句逐行执行命令
… … …
end
绘图命令:将运算结果绘制出来
当然更复杂程序还需要调用子程序,或与 simulink以及其他应用程序结合起来。
Kunming University of Science & TechnologyC.1 信号分析基础 -4/24
二,M文件的编辑及 MATLAB工作路径的设置
进入 MATLAB的 Editor/Debugger窗口来编辑程序
在编辑环境中,文字的不同颜色显示表明文字的不同属性。
绿色:注解;黑色:程序主体;红色:属性值的设定;
蓝色:控制流程。
在运行程序之前,必须设置好 MATLAB的工作路径,使得所要运行的程序及运行程序所需要的其他文件处在当前目录之下,只有这样,才可以使程序得以正常运行。
否则可能导致无法读取某些系统文件或数据,从而程序无法执行。
通过 cd指令在命令窗口中可以更改、显示当前工作路径。
通过路径浏览器( path browser)也可以进行设置
Kunming University of Science & TechnologyC.1 信号分析基础 -5/24
三,MATLAB的程序类型
MATLAB的程序类型有三种,一种是在命令窗口下执行的 脚本 M文件 ;另外一种是可以存取的 M文件,也即程序文件;最后一种是 函数( function)文件 。
1、脚本 M文件在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出 MATLAB后就释放了。
2、程序文件
以,m格式进行存取,包含一连串的 MATLAB指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,没有输入参数,也不会返回参数。
程序运行时只需在工作空间中键入其名称即可。
Kunming University of Science & TechnologyC.1 信号分析基础 -6/24
例:调用,m文件
Kunming University of Science & TechnologyC.1 信号分析基础 -7/24
3、函数文件
与在命令窗口中输入命令一样,函数接受输入参数,然后执行并输出结果。用 help命令可以显示它的注释说明。
具有标准的基本结构。
( 1)函数定义行(关键字 function)
function[out1,out2,..]=filename(in1,in2,..)
输入和输出(返回)的参数个数分别由 nargin和 nargout两个
MATLAB保留的变量来给出。
( 2)第一行帮助行,即 H1行
以( %)开头,作为 lookfor指令搜索的行
( 3)函数体说明及有关注解
以( %)开头,用以说明函数的作用及有关内容
如果不希望显示某段信息,可在它的前面加空行
( 4)函数体语句
函数体内使用的除返回和输入变量这些在 function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在 MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。
Kunming University of Science & TechnologyC.1 信号分析基础 -8/24
四、声明子程序(函数程序)变量
1、子程序与主程序之间的数据是通过参数进行传递的,
子程序应用主程序传递来的参数进行计算后,将结果返回主程序。
例 exp_function.m
2、如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。如果两个或多个函数共用一个变量(或者说在子程序中也要用到主程序中的变量,注意不是参数),那么可以用
global来将它声明为全局变量。
全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行的效率。
Kunming University of Science & TechnologyC.1 信号分析基础 -9/24
例:调用函数文件( 例 exp_function.m)
编写函数文件 sumhe.m
编写主程序文件 exp_function.m
Kunming University of Science & TechnologyC.1 信号分析基础 -10/24
例:调用函数文件
Kunming University of Science & TechnologyC.1 信号分析基础 -11/24
五、字符串及其宏命令
字符串要用单引号并用括号括在里面。如:
,disp(‘text string’) % disp字符串显示命令
text string
在单引号里边的字符串可以作为矢量或矩阵的元素。
使用 disp命令或输入变量名就可以显示它们表示的字符串。如:
(元素 1含 9个字符,包括空格;元素 2含有 11个字符;因此只要在元素 1中加入 2个空格即可解决问题)
Kunming University of Science & TechnologyC.1 信号分析基础 -12/24
五、字符串及其宏命令
Kunming University of Science & TechnologyC.1 信号分析基础 -13/24
五、字符串及其宏命令
宏是 MATLAB语言用在常用命令部分的缩写。它可以被存储用于建立 M文件的一部分。宏命令采用字符串,
并使用 eval命令去执行宏命令。下例是采用宏命令计算阶乘的例子。
Kunming University of Science & TechnologyC.1 信号分析基础 -14/24
六、常用的编程命令
pause:停止 m文件的执行直至有键按下。 pause(n)
将使程序暂停 n秒。
echo on/off:控制是否在屏幕上显示程序内容。
keyboard:停止程序执行,把控制权交给键盘。输入 return并回车后继续程序执行。
x=input(‘prompt’):把输入的字符串作为提示符,
等待使用者输入一个响应,然后把它赋值到 x。
Kunming University of Science & TechnologyC.1 信号分析基础 -15/24
七、程序流程控制
1,for循环语句基本格式
for 循环变量=起始值:步长:终止值循环体
end
步长缺省值为 1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,
循环结束。循环结构可以嵌套使用。
书写格式不必太过于拘泥,在 Editor编辑器中会自动进行处理。
Kunming University of Science & TechnologyC.1 信号分析基础 -16/24
七、程序流程控制
2,while循环语句基本格式
while 表达式循环体
end
若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。
While循环和 for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而 for结构中循环体的执行次数是确定的。
Kunming University of Science & TechnologyC.1 信号分析基础 -17/24
七、程序流程控制
3,if,else,elseif语句
( 1) if 逻辑表达式执行语句
end
当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行;若为假,则跳过结构中的内容,向下执行。
( 2) if 逻辑表达式 ( 3) if 逻辑表达式 1
执行语句 1 执行语句 1
else elseif 逻辑表达式 2
执行语句 2 执行语句 2
end …
end
Kunming University of Science & TechnologyC.1 信号分析基础 -18/24
七、程序流程控制
4,switch语句格式,switch 表达式(%可以是标量或字符串)
case 值 1
语句 1
case 值 2
语句 2
….
otherwise
语句 3
end
执行方式:表达式的值和哪种情况 (case)的值相同,就执行哪种情况中的语句,如果不同,则执行 otherwise中的语句。格式中也可以不包括 otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。
Kunming University of Science & TechnologyC.1 信号分析基础 -19/24
本章总结
本章所要掌握的是 MATLAB语言的基本知识,包括 MATLAB
窗口环境的使用;矩阵运算及多项式处理;基本的绘图命令;
程序设计入门。
MATLAB的窗口环境是基础的基础,要求熟练掌握语句命令的输入、变量的使用、基本的数学函数及各种工作空间与文件管理的命令。要善于运用 help命令自学。
MATLAB具有强大的矩阵运算能力,要求熟练掌握矩阵的输入与生成,掌握矩阵的基本运算及操作,区分带点运算与不带点运算点的不同;掌握多项式的建立与表示方法及多项式的基本运算。
MATLAB同样具有强大的图形处理能力,要求熟练掌握基本的二维绘图命令。
MATLAB具有三种基本的 M文件类型,要求掌握它们的区别及基本结构,熟悉程序流程控制的使用及常用的编程命令。
Kunming University of Science & TechnologyC.1 信号分析基础 -20/24
谢谢
School of Michanical & Electronical Engineering,Kunming University of Science & Technology
一,MATLBA程序的基本设计原则
1、%后面的内容是程序的注解,要善于运用注解使程序更具可读性。
2、养成在主程序开头用 clear指令清除变量的习惯,以消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用 clear。
3、参数值要集中放在程序的开始部分,以便维护。要充分利用
MATLAB工具箱提供的指令来执行所要进行的运算,在语句行之后输入分号使其及中间结果不在屏幕上显示,以提高执行速度。
4,input指令可以用来输入一些临时的数据;而对于大量参数,则通过建立一个存储参数的子程序,在主程序中用子程序的名称来调用。
5、程序尽量模块化,也就是采用主程序调用子程序的方法,将所有子程序合并在一起来执行全部的操作。
6、充分利用 Debugger来进行程序的调试(设置断点、单步执行、
连续执行),并利用其他工具箱或图形用户界面( GUI)的设计技巧,将设计结果集成到一起。
7、设置好 MATLAB的工作路径,以便程序运行。
Kunming University of Science & TechnologyC.1 信号分析基础 -2/24
Kunming University of Science & TechnologyC.1 信号分析基础 -3/24
8,MATLAB程序的基本组成结构
%说明清除命令:清除 workspace中的变量和图形( clear,close)
定义变量:包括全局变量的声明及参数值的设定逐行执行命令:指 MATLAB提供的运算指令或工具箱
… … … 提供的专用命令控制循环,包含 for,if then,switch,while等语句逐行执行命令
… … …
end
绘图命令:将运算结果绘制出来
当然更复杂程序还需要调用子程序,或与 simulink以及其他应用程序结合起来。
Kunming University of Science & TechnologyC.1 信号分析基础 -4/24
二,M文件的编辑及 MATLAB工作路径的设置
进入 MATLAB的 Editor/Debugger窗口来编辑程序
在编辑环境中,文字的不同颜色显示表明文字的不同属性。
绿色:注解;黑色:程序主体;红色:属性值的设定;
蓝色:控制流程。
在运行程序之前,必须设置好 MATLAB的工作路径,使得所要运行的程序及运行程序所需要的其他文件处在当前目录之下,只有这样,才可以使程序得以正常运行。
否则可能导致无法读取某些系统文件或数据,从而程序无法执行。
通过 cd指令在命令窗口中可以更改、显示当前工作路径。
通过路径浏览器( path browser)也可以进行设置
Kunming University of Science & TechnologyC.1 信号分析基础 -5/24
三,MATLAB的程序类型
MATLAB的程序类型有三种,一种是在命令窗口下执行的 脚本 M文件 ;另外一种是可以存取的 M文件,也即程序文件;最后一种是 函数( function)文件 。
1、脚本 M文件在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出 MATLAB后就释放了。
2、程序文件
以,m格式进行存取,包含一连串的 MATLAB指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,没有输入参数,也不会返回参数。
程序运行时只需在工作空间中键入其名称即可。
Kunming University of Science & TechnologyC.1 信号分析基础 -6/24
例:调用,m文件
Kunming University of Science & TechnologyC.1 信号分析基础 -7/24
3、函数文件
与在命令窗口中输入命令一样,函数接受输入参数,然后执行并输出结果。用 help命令可以显示它的注释说明。
具有标准的基本结构。
( 1)函数定义行(关键字 function)
function[out1,out2,..]=filename(in1,in2,..)
输入和输出(返回)的参数个数分别由 nargin和 nargout两个
MATLAB保留的变量来给出。
( 2)第一行帮助行,即 H1行
以( %)开头,作为 lookfor指令搜索的行
( 3)函数体说明及有关注解
以( %)开头,用以说明函数的作用及有关内容
如果不希望显示某段信息,可在它的前面加空行
( 4)函数体语句
函数体内使用的除返回和输入变量这些在 function语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之后,这些变量会自动在 MATLAB的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。
Kunming University of Science & TechnologyC.1 信号分析基础 -8/24
四、声明子程序(函数程序)变量
1、子程序与主程序之间的数据是通过参数进行传递的,
子程序应用主程序传递来的参数进行计算后,将结果返回主程序。
例 exp_function.m
2、如果一个函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。如果两个或多个函数共用一个变量(或者说在子程序中也要用到主程序中的变量,注意不是参数),那么可以用
global来将它声明为全局变量。
全局变量的使用可以减少参数传递,合理利用全局变量可以提高程序执行的效率。
Kunming University of Science & TechnologyC.1 信号分析基础 -9/24
例:调用函数文件( 例 exp_function.m)
编写函数文件 sumhe.m
编写主程序文件 exp_function.m
Kunming University of Science & TechnologyC.1 信号分析基础 -10/24
例:调用函数文件
Kunming University of Science & TechnologyC.1 信号分析基础 -11/24
五、字符串及其宏命令
字符串要用单引号并用括号括在里面。如:
,disp(‘text string’) % disp字符串显示命令
text string
在单引号里边的字符串可以作为矢量或矩阵的元素。
使用 disp命令或输入变量名就可以显示它们表示的字符串。如:
(元素 1含 9个字符,包括空格;元素 2含有 11个字符;因此只要在元素 1中加入 2个空格即可解决问题)
Kunming University of Science & TechnologyC.1 信号分析基础 -12/24
五、字符串及其宏命令
Kunming University of Science & TechnologyC.1 信号分析基础 -13/24
五、字符串及其宏命令
宏是 MATLAB语言用在常用命令部分的缩写。它可以被存储用于建立 M文件的一部分。宏命令采用字符串,
并使用 eval命令去执行宏命令。下例是采用宏命令计算阶乘的例子。
Kunming University of Science & TechnologyC.1 信号分析基础 -14/24
六、常用的编程命令
pause:停止 m文件的执行直至有键按下。 pause(n)
将使程序暂停 n秒。
echo on/off:控制是否在屏幕上显示程序内容。
keyboard:停止程序执行,把控制权交给键盘。输入 return并回车后继续程序执行。
x=input(‘prompt’):把输入的字符串作为提示符,
等待使用者输入一个响应,然后把它赋值到 x。
Kunming University of Science & TechnologyC.1 信号分析基础 -15/24
七、程序流程控制
1,for循环语句基本格式
for 循环变量=起始值:步长:终止值循环体
end
步长缺省值为 1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,
循环结束。循环结构可以嵌套使用。
书写格式不必太过于拘泥,在 Editor编辑器中会自动进行处理。
Kunming University of Science & TechnologyC.1 信号分析基础 -16/24
七、程序流程控制
2,while循环语句基本格式
while 表达式循环体
end
若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。
While循环和 for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而 for结构中循环体的执行次数是确定的。
Kunming University of Science & TechnologyC.1 信号分析基础 -17/24
七、程序流程控制
3,if,else,elseif语句
( 1) if 逻辑表达式执行语句
end
当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行;若为假,则跳过结构中的内容,向下执行。
( 2) if 逻辑表达式 ( 3) if 逻辑表达式 1
执行语句 1 执行语句 1
else elseif 逻辑表达式 2
执行语句 2 执行语句 2
end …
end
Kunming University of Science & TechnologyC.1 信号分析基础 -18/24
七、程序流程控制
4,switch语句格式,switch 表达式(%可以是标量或字符串)
case 值 1
语句 1
case 值 2
语句 2
….
otherwise
语句 3
end
执行方式:表达式的值和哪种情况 (case)的值相同,就执行哪种情况中的语句,如果不同,则执行 otherwise中的语句。格式中也可以不包括 otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。
Kunming University of Science & TechnologyC.1 信号分析基础 -19/24
本章总结
本章所要掌握的是 MATLAB语言的基本知识,包括 MATLAB
窗口环境的使用;矩阵运算及多项式处理;基本的绘图命令;
程序设计入门。
MATLAB的窗口环境是基础的基础,要求熟练掌握语句命令的输入、变量的使用、基本的数学函数及各种工作空间与文件管理的命令。要善于运用 help命令自学。
MATLAB具有强大的矩阵运算能力,要求熟练掌握矩阵的输入与生成,掌握矩阵的基本运算及操作,区分带点运算与不带点运算点的不同;掌握多项式的建立与表示方法及多项式的基本运算。
MATLAB同样具有强大的图形处理能力,要求熟练掌握基本的二维绘图命令。
MATLAB具有三种基本的 M文件类型,要求掌握它们的区别及基本结构,熟悉程序流程控制的使用及常用的编程命令。
Kunming University of Science & TechnologyC.1 信号分析基础 -20/24
谢谢
School of Michanical & Electronical Engineering,Kunming University of Science & Technology