第四章 MATLAB的程序.doc
文本预览下载声明
第4章 MATLAB程序设计
4.1脚本文件和函数文件
M文件有两种形式:M脚本文件和M函数文件。
脚本文件
对于一些比较简单的问题,从指令窗中直接输入指令进行计算是十分轻松简单的事。但随指令数的增加,或随控制流复杂度的增加,或重复计算要求的提出,直接从指令窗进行计算就显得烦琐。而此时脚本文件最为适宜。
M函数文件
与脚本文件不同,函数文件(Function file)犹如一个“黑箱”。从外界只看到:传给它的输入量和送出来的计算结果。而内部运作是藏而不见的。
4.1.1 M文本编辑器
MATLAB的M文件是通过M文件编辑/调试器窗口(Editor/Debugger)来创建的。
单击MATLAB桌面上的图标,或者单击菜单“File”——“New”——“M-file”,可打开空白的M文件编辑器,也可以通过打开已有的M文件来打开M文件编辑器。如图4.1所示为打开已创建的M文件。
4.1.2 M脚本文件
脚本文件的特点:
(1) 脚本文件中的命令格式和前后位置,与在命令窗口中输入的没有任何区别。
(2) MATLAB在运行脚本文件时,只是简单地按顺序从文件中读取一条条命令,送到MATLAB命令窗口中去执行。
(3) 与在命令窗口中直接运行命令一样,脚本文件运行产生的变量都是驻留在MATLAB的工作空间(workspace)中,可以很方便地查看变量,除非用clear命令清除;脚本文件的命令也可以访问工作空间的所有数据,因此要注意避免变量的覆盖而造成程序出错。
【例4.1】在M文件编辑/调试器窗口中编写M脚本文件绘制二阶系统的多条时域曲线。
(1) 单击MATLAB桌面上的图标打开M文件编辑器。
(2) 将命令全部写入M文件编辑器中,为了能标志该文件的名称,在第一行写入包含文件名的注释。保存文件为Ex0401.m。
%EX0401 二阶系统时域曲线
x=0:0.1:20;
y1=1-1/sqrt(1-0.3^2)*exp(-0.3*x).*sin(sqrt(1-0.3^2)*x+acos(0.3))
plot(x,y1,r) %画阻尼系数为0.3的曲线
hold on
y2=1-1/sqrt(1-0.707^2)*exp(-0.707*x).*sin(sqrt(1-0.707^2)*x+acos(0.707))
plot(x,y2,g) %画阻尼系数为0.707的曲线
y3=1-exp(-x).*(1+x)
plot(x,y3,b) %画阻尼系数为1的曲线
(3) 选择M文件编辑器菜单“Debug”——“Run”,就可以在图形窗中看到如图4.2所示的曲线。
查看工作空间的变量:
whos
Name Size Bytes Class
x 1x201 1608 double array
y1 1x201 1608 double array
y2 1x201 1608 double array
y3 1x201 1608 double array
Grand total is 804 elements using 6432 bytes
4.1.3 M函数文件
函数文件的特点:
(1) 第一行总是以“function”引导的函数声明行;
?函数声明行的格式:
function [输出变量列表] = 函数名(输入变量列表)?
(2) 函数文件在运行过程中产生的变量都存放在函数本身的工作空间;
(3) 当文件执行完最后一条命令或遇到“return”命令时,就结束函数文件的运行,同时函数工作空间的变量就被清除;
(4) 函数的工作空间随具体的M函数文件调用而产生,随调用结束而删除,是独立的、临时的,在MATLAB运行过程中可以产生任意多个临时的函数空间。
【例4.2】在M文件编辑/调试器窗口编写计算二阶系统时域响应的M函数文件,并在MATLAB命令窗口中调用该文件。
创建M函数文件并调用的步骤如下:
(1) 编写函数代码
function y=Ex0402(zeta)
%EX0402 画二阶系统时域曲线
x=0:0.1:20;
y=1-1/sqrt(1-zeta^2)*exp(-zeta*x).*sin(sqrt(1-zeta^2)*x+acos(zeta))
plot(x,y)
(2) 将函数文件保存为“Ex0402.m”。
(3) 在MATLAB命令窗口输入以下命令,则会出现f的计算值和绘制的曲线:
f=Ex0402
显示全部