MATLAB电子教案(8)

2019-06-11 09:45

例:for嵌套应用实例。

解:程序名为e4.m的MATLAB程序如下: for m=1:5 for n=1:5

a(m,n)=1/(m+n-1); end end a

②while循环。格式: while <循环判断语句> 循环体 end 说明:与for循环不同的是,while循环不能指定循环的次数,循环判断语句为某种形式的逻辑判断表达式。当该表达式的逻辑值为真时,就执行循环体内的语句;当表达式的逻辑值为假时,就退出当前的循环体。

例:使用while循环结构求

?k的值。

k?1100解:程序名为e5.m的MATLAB程序如下: sum=0; k=1;

while k<=100; sum=sum+k; k=k+1; end sum

(2)分支结构

分支结构为MATLAB的条件判断语句,分为以下三种结构。 ①if-end结构。格式: if <逻辑判断语句> 执行语句 end 说明:当逻辑判断表达式为“真”时,就执行if和end之间的语句,否则不予执行。 ②if-else-end结构。格式: if <逻辑判断语句> 执行语句1 else 执行语句2 end 说明:当逻辑判断表达式为“真”时,将执行if与else内的语句,否则将执行else与end内的语句。 例:使用if-else-end结构将一数组做特殊排列。 解:程序名为e6.m的MATLAB程序如下:

第 36 页/共 63页

for k=1:9 if k<=5

b(k)=k; else

b(k)=10-k; end end b

③if-elseif-end结构。格式: if <逻辑判断语句1> 执行语句1 elseif <逻辑判断语句2> 执行语句2 else 执行语句3 end 例:使用if-elseif-end结构将矩阵a=[1 2 3;4 5 6;7 8 9]进行满足一定条件的处理。 解:程序名为e7.m的MATLAB程序如下: a=[1 2 3;4 5 6;7 8 9]; m=2;n=3; if m==n

a(m,n)=0; elseif abs(m-n)==2 a((m-1),(n-1))=-1; else

a(m,n)=-5; end a

(3)开关结构

开关结构即switch-case结构,用来解决多分支判断选择,格式为: switch <选择判断量> case 选择判断值1 选择判断语句1 case 选择判断值2 选择判断语句2 · · · otherwise 判断执行语句 end 说明:①选择判断量给出了switch-case语句的开关条件,当选择判断值与之匹配时,就执行其后的语句,如果没有选择判断值与之匹配,就执行otherwise后面的语句。在执行过程中,只有一个case命令被

第 37 页/共 63页

执行。

②执行完命令后,程序就跳出分支结构,执行end下面的语句。 例:switch-case分支结构应用实例。

解:程序名为e8.m的MATLAB程序如下: input_num=1; switch input_num case -1

disp('negative one'); case 0

disp('zero') case 1

disp('positive one'); otherwise

disp('other value'); end

(4)试探结构

试探结构try-catch为用户提供了一种错误捕获机制。格式:

try 语句段1 catch 语句段2 end 说明:试探结构首先试探性地执行语句段1,如果在此段语句执行过程中出现错误,可调用MATLAB函数lasterr()查询出错原因,并终止这段语句的执行,转而执行语句段2中的内容。如果函数lasterr()运行结果为一个空串,则表明语句段1被成功执行。若执行语句段2时又出错,则MATLAB将终止该结构。

例:试探结构应用实例。

解:程序名为e9.m的MATLAB程序如下: A=magic(3) %设置3×3维摩矩阵

B=ones(4,3) %设置4×3维元素全为1的矩阵 try

C=A*B; %取A的第N行元素 catch

C=NaN %如果C=A*B运算出错,改为C=NaN运算 end lasterr %显示出错原因

通过运行结果可以看出:在此例中,由于A和B的维数不兼容,所以在C=A*B段语句执行过程出现错误,调用lasterr()查询出错原因,并终止这段语句执行,转而执行C=NaN语句。

4、控制程序流程的其他常用命令

(1)break命令。作用是中断循环语句的执行。

(2)return命令。作用是中断函数的运行,返回到上级调用函数。

(3)pause命令。用于使程序暂时终止运行,等待用户按任意键后继续运行,适用于在调试程序时需要查看中间结果的情况。调用格式如下:

pause 暂停执行文件,等待用户按任意键继续 pause(n) 在继续执行之前暂停n秒

第 38 页/共 63页

(4)input命令。带有询问提示的输入 命令。该命令将MATLAB的控制权暂时交给用户,此后,用户通过键盘键入数值、字符串或表达式,并经回车把键入内容输入工作空间,同时把控制权交还给MATLAB。格式:

v=input(‘message’) 将用户输入的内容赋给变量v

v=input(‘message’,s) 将用户输入的内容作为字符串赋给变量v 说明:命令中的message是将要显示在屏幕中上的字符串。

(5)keyboard命令。调用键盘命令,当程序遇到keyboard时,MATLAB将控制权交给键盘,用户可以从键盘输入各种合法的MATLAB命令,只有当用户使用return命令结束输入后,控制权还给程序。

说明:keyboard与input的不同点在于:keyboard允许输入任意多个MATLAB命令,而input只能输入赋给变量的“值”,即数值、字符串或元胞数组等。

(6)警示命令。在编写M文件时,常用的警示命令有:

error(‘message’) 显示出错信息message,终止程序

lasterr 显示MATLAB自动判断的最新出错原因并终止程序 warning(‘message’) 显示警告信息message并继续运行

lastwarn 显示MATLAB自动给出的最新警告程序并继续运行

第3章 数学模型的MATLAB描述

3.1 控制系统的数学模型

一、线性定常连续系统 1、微分方程模型

设单输入单输出(SISO)线性定常连续系统的输入信号为r(t),输出信号为c(t),则其微分方程的一般形式为

dnc(t)dn?1c(t)dc(t)dmr(t)dm?1r(t)dr(t)a0?a?…?a?a?b?b?…+b?bm 1n?1n01m?1nn?1mm?1dtdtdtdtdtdt式中,系数a0,a1,?,an,b0,b1,?,bm为实常数,且m≤n。 2、传递函数(Transfer Function:TF)模型

对上式在零初始条件下求拉氏变换,并根据传递函数定义可得SISO系统传递函数的一般形式为

l[c(t)]C(s)b0sm?b1sm?1?…?bm?1s?bmM(s) G(s)????nn?1l[r(t)]R(s)a0s?a1s?…an?1s?anN(s)分子和分母多项式系数分别用向量num和den表示。

3、零极点增益(Zero-Pole-Gain:ZPK)模型

上式中分子多项式和分母多项式因式分解后,可写为如下形式:

(s?z1)(s?z2)…(s?zm)G(s)?K?K(s?p1)(s?p2)…(s?pn)?(s?z)im?(s?p)jj?1i?1n

对于SISO系统,z1,z2,?,zm为G(s)的零点,p1,p2,?,pn为G(s)的极点,K为系统的增益。 在MATLAB中,控制系统的零点和极点分别用向量Z和P表示,即 Z=[z1,z2,?,zm],P=[p1,p2,?,pn]

4、频率响应数据(Frequency Response Data:FRD)模型

设线性定常系统的频率特性为G(jω)=| G(jω)|∠ G(jω),在幅值为1,频率为ωi(i=1,2,?,n)的

第 39 页/共 63页

正弦信号r(t)=sinωit的作用下,其稳态输出为yi(t)= | G(jωi)|sin(ωit+∠ G(jωi))。频率响应数据模型就是以{ G(jωi),ωi}的形式,存储通过仿真或实验方法获得的频率响应数据值的。

5、状态空间(State-Space:SS)模型

对于多输入多输出(MIMO)系统,应用最多的是状态空间模型。一般形式为:

?(t)?Ax(t)?Bu(t)?x;u(t)为输入向量(p维);y(t)为输出向量(q维);?式中,x(t)为状态向量(n维)

y(t)?Cx(t)?Du(t)?A为系统矩阵或状态矩阵或系数矩阵(n×n维);B为控制矩阵或输入矩阵(n×p维);C为观测矩阵或输出矩阵(q×n维);D为前馈矩阵或输入/输出矩阵(q×p维)。

二、线性定常离散系统 1、差分方程模型

设SISO线性定常离散系统的输入序列为r(k),输出序列为c(k),则其差分方程的一般形式为

a0c(k?n)?a1c(k?n?1)?…?an?1c(k?1)?anc(k)?b0r(k?m)?b1r(k?m?1)?…?bm?1r(k?1)?bmr(k)

2、脉冲传递函数模型

脉冲传递函数也成为Z传递函数。SISO系统脉冲传递函数一般形式为

l[c(z)]C(z)b0zm?b1zm?1?…?bm?1z?bm G(z)???l[r(z)]R(z)a0zn?a1zn?1?…an?1z?an3、零极点增益模型

G(z)?K(z?z1)(z?z2)…(z?zm)

(z?p1)(z?p2)…(z?pn)4、状态空间模型

MIMO线性定常离散系统状态空间模型的一般形式为:

x(k?1)?Ax(k)?Bu(k)?;u(k)为输入向量序列(p维);y(k)为输?式中,x(k)为状态向量序列(n维)

y(k)?Cx(k)?Du(k)?出向量序列(q维);矩阵A、B、C、D的维数和意义与定常连续系统中相同。

3.2 数学模型的建立

线性定常系统数学模型的生成及转换函数 函数名称 功能 tf 生成(或转换)传递函数模型 ss 生成(或转换)状态空间模型 zpk frd 生成(或转换)零极点增益模型 建立频率响应数据模型 一、传递函数模型

功能:生成线性定常连续/离散系统的传递函数模型,或者将状态空间模型或零极点增益模型转换成传递函数模型。

格式:

sys=tf(num,den) 生成传递函数模型sys

sys=tf(num, den,'Property1',Value1,?, 'PropertyN',ValueN)

生成传递函数模型sys。模型sys的属性(Property)及属性值(Value)用'Property',Value指定

第 40 页/共 63页


MATLAB电子教案(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:参考实用版个人蔬菜生鲜配送网络平台建设创业商业计划书

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: