1 / 56

第一部分数字仿真 实验

第一部分数字仿真 实验. 实验 1 Matlab 概述. The MathWorks,Inc. Matlab 的特点 强大的数学运算能力 方便实用的绘图功能及语言的高度集成性 比较完善的控制领域的工具箱. 第一部分数字仿真 实验. 实验 1 Matlab 概述. 1 Matlab 语言的基本使用环境 命令子窗( command window) 程序调用版( Launch Pad) 命令的历史记录( Command History) 工作空间管理程序( Workspace) 当前目录管理程序( Current Directory).

kineta
Download Presentation

第一部分数字仿真 实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第一部分数字仿真实验 实验 1 Matlab概述 The MathWorks,Inc Matlab的特点 • 强大的数学运算能力 • 方便实用的绘图功能及语言的高度集成性 • 比较完善的控制领域的工具箱

  2. 第一部分数字仿真实验 实验 1 Matlab概述 1 Matlab语言的基本使用环境 • 命令子窗(command window) • 程序调用版(Launch Pad) • 命令的历史记录(Command History) • 工作空间管理程序(Workspace) • 当前目录管理程序(Current Directory)

  3. 第一部分数字仿真实验 Matlab的工作空间 命令是用命令行形式或m文件形式输入,那么输入的 命令和创建的所有变量值,就会驻留在Matlab的工作 空间,可在任何需要的时候调用。 工作空间管理命令:who, whos, clear

  4. 实验 1 Matlab概述 关于变量和函数命名 一般为双精度浮点,8个字节(64位), -1.7*10308—1.7*10308, 表示为 Double( ) 图象处理中:无符号8 位整型, 表示为 unit8( ), int8( ) 变量(函数名)由字母引导,可跟字母、数字、下化线等,不超过19个字符。区分大小写 支持复数向量、矩阵和字符串型矩阵。

  5. 2 Matlab的基本特性 特定常数 • eps 浮点运算误差=2.2204*10-16 • j, i 纯虚数 • Inf 无穷大 • NaN 不定式 • pi 圆周率 • ans 用于返回结果的缺省变量名 • nargin 所用函数的输入变量 • nargout 所用函数的输出变量 注释和标点 一行中,% 后面的所有文字都是注释 多条命令可以放在同一行,只要它们被逗号或分号隔开,分号禁 止显示。连续三个点 … 表示语句的余下部分将在下行出现,变 量名不能分开,注释行不能续行。

  6. 2 Matlab的基本特性 Matlab的搜索路径 当你在命令行输入一个字符串(可能是变量或命令),回车后,Matlab按一定的顺序执行。例如 >> ptest 应用c语言按照Mex技术要求的格式编写相应部分的程序,通过编译连接,形成Matlab可以直接调用的动态连接库,显著加快运算速度。 顺序为: (1)检查是否为工作空间中的变量 (2)检查是否为内置函数 (3)检查MEX文件ptest.mex是否存在于当间目录 (4)检查M文件ptest.m是否为存在于当间目录 (5)按次序搜索已设置的路径。检查ptest.mex或ptest.m是否为存在于matlab的搜索路径中。

  7. Matlab的三种执行方式 M 文件和M函数 1 脚本文件 (批处理文件) 启动M文件编辑器 b=[1;2;3]; A=[1 2 3;4 5 6;7 8 9]; Inv(A)*b; 脚本文件空间与Matlab工作空间是相同的。

  8. Matlab的三种执行方式 M 文件和M函数 2 M函数 function s=example2(A,b) % 求解线性方程组As=b的解s if det(A)~=0 s=inv(A)*b else error(‘A 是一个奇异矩阵’) end ; 保存文件时,文件名和函数名必须相同。 >> s=example2(A,b)

  9. Matlab的三种执行方式 m函数有自己专用的工作空间,函数内部变量与matlab工作空间 之间的唯一联系是函数的输入和输出变量。 函数调用语句 [返回变量列表]=函数名(变量列表) 例如: [v,d]=eig(A) Matlab的全局变量,函数与其他函数、matlab工作空间共享变量。说明变量全局共享的方法是“global 变量名”

  10. Matlab里的函数(内置) Ones(2,2), eye(3) length(A),size(A),sum(A),max(A) rank det log10,log log,sin cos tan >>x=[1, pi, 0.1 0.5 ] >> cos(x) >>sum(x) >>t=0:0.1:10

  11. Matlab的矩阵运算 Matlab的矩阵运算 >>A=[1,2,3;4,5,6;7,8,9] >>A=[A;[1 2 4]] 冒号表达式给行向量赋值 >>b=s1:s2:s3 x=(first:last) x=(first:increment:last) x=linspace(first,last,n) x=logspace(first,last,n)

  12. 3 矩阵的Matlab表示 访问矩阵的元素 >>A=[1,2,3;4,5,6;7,8,9] >>A(1,:) >>A(2,1:3) >>A(1:3,1) >>A(2,2)=1; >>zeros(2,2) >>ones(3,1) >>eye(4)

  13. 3 矩阵运算 矩阵转置,加、减、乘,除 >>B=A ‘ >> C=A+B; >> D=A*B >>inv(A) >> A\B 左乘,当A为非奇异方阵时=inv(A)*B >> B/A 右乘,当A为非奇异方阵时=B*inv(A) 点运算 >> C=A.*B 矩阵对应元素之间的乘积

  14. 4 流程控制结构 循环语句、条件语句、开关语句的结构 for 循环变量=Vect 循环体语句组 end for …end 循环结构 while…end 通常使用的循环格式为 for i=s1:s3:s2 判断i是否在s1,s2之间 >>msum=0; for i=1:1:100, msum=msum+i; end; msum

  15. 4 流程控制结构 循环语句、条件语句、开关语句的结构 条件转移结构 if 逻辑变量 条件块语句组 end while…end 当逻辑变量为非零,则执行条件块语句组的内容,执行完后继续向下执行;若逻辑变量为零,则跳过条件块语句组直接向下执行 >>msum=0; i=1; while (i<=100), msum=msum+i; i=i+1; end;

  16. 4 流程控制结构 循环语句、条件语句、开关语句的结构 条件转移结构 if 条件式1 条件块语句组1 elseif 条件式2 条件块语句组2 : else 条件块语句组n+1 end if 条件式 条件块语句组1 else 条件块语句组2 end 开关语句switch…case

  17. 5 Matlab函数编写 M函数的基本结构 function [返回变量列表]=函数名(输入变量列表) 注释说明语句段 由%引导 输入、返回变量格式的检测 函数体语句 nargin: nargout: 例 生成一个m*n阶的Hibert矩阵,它的第i行第j列的元素为1/(i+j-1)

  18. 5 Matlab函数编写 function A=myhilb(n,m) % % If nargout>1, error(‘Too many output arguments’); end If nargin==1, m=n; elseif nargin==01nargin>2) error(‘wrong number of intput arguments’); end A1=zeros(n,m); for i=1:n for j=1:m A1(i,j)=1/(i+j-1); end,end If nargout==1,A=A1;elseif nargout==0,disp(A1);end M函数例题

  19. 5 Matlab函数编写 function A=myhilb(n,m) % % If nargout>1, error(‘Too many output arguments’); end If nargin==1, m=n; elseif nargin==01nargin>2) error(‘wrong number of intput arguments’); end A1=zeros(n,m); for i=1:n for j=1:m A1(i,j)=1/(i+j-1); end,end If nargout==1,A=A1;elseif nargout==0,disp(A1);end M函数的跟踪调试

  20. 6 Matlab语言下图形绘制 plot(x, y) 基本二维图象绘制语句 >> t=0:0.1:2*pi; y=[sin(t); cos(t)]; plot(t,y) >> t=0:0.1:2*pi; plotyy(t,sin(t),t,0.1*cos(t)) 带有其他选项的绘图函数 plot(x1, y1,选项1, x2, y2,选项2,。。。)

  21. 6 Matlab语言下图形绘制 plot(t, sin(t),’-’,t,cos(t),’:’,t,sin(t).*cos(t),’x’) 带有其他选项的绘图函数示例 二维曲线的标注方法 >> grid xlabel(‘ ‘) ylabel(‘ ’) title(‘ ‘) axis([xmin,xmax,ymin,ymax]) Matlab提供的特殊二维曲线绘制函数

  22. 6 Matlab语言下图形绘制 plot(t, sin(t),’-’,t,cos(t),’:’,t,sin(t).*cos(t),’x’) 带有其他选项的绘图函数示例

  23. 6 Matlab语言下图形绘制 hold on 设置当前图形的hold属性为on hold off 设置当前图形的hold属性为off ishold 返回hold属性 在已有的图形上叠加其他图形 T=0:0.1:10; plot(t, sin(t),’-’,t,cos(t),’:’,t,sin(t).*cos(t),’x’); legend(‘sin(t)’,’cos(t)’,’cos(t)*sin(t)’)

  24. 6 Matlab语言下图形绘制 plot(t, sin(t),’-’,t,cos(t),’:’,t,sin(t).*cos(t),’x’) 带有其他选项的绘图函数示例

  25. 7 传递函数的Matlab描述 传递函数描述 • 多项式描述与运算 >> p=[1 3 0 5]; >> q=[1 2]; >>n=conv(p,q) >> roots(p) >> value=polyval(n,-2) p(s)=s3+3s2+5 n(s)=p(s)q(s) 多项式p(s)的根 求s=-2 时n(s)的值

  26. 7 传递函数的Matlab描述 • 传递函数描述 G=tf(num,den) >>G=tf(num,den) >>printsys(G) >>[p,z]=pzmap(num,den) G(s)=num(s)/den(s) 打印结果 零极点图 G(s)=(6s2+1)/(s3+3s2+3s+1) [z,p,k]=tf2zp(num,den)

  27. 7 传递函数的Matlab描述 框图的串联、并联和反馈 [num,den]=series(num1,den1, num2,den2) [num,den]=paralle1(num1,den1, num2,den2) [num,den]=feedback(num1,den1, num2,den2,sign) 单位反馈 [num,den]=cloop(num1,den1,sign) [num,den]=minreal(numg,deng) 消除公因式

  28. G1 G1 G1 G1 G1 G1 7 传递函数的Matlab描述 设:G1=num1/den1, G2=num2/den2 num1=s+1, den1=s2+5s+6 num2=1, den2=s2+3s 求G1G2的串联和反馈连接的等效传函,并求出零极点图 num,den]=series(num1,den1, num2,den2) [num,den]=feedback(num1,den1, num2,den2,sign [num,den]=cloop(num1,den1,sign)

  29. G1 G1 8 命令行下的时域计算 [y,x,t]=step(num,den); plot(t,y) step(num,den) 给定传递函数G1=2, 计算单位阶跃响应 G2=1/[(s+1)(s+3)] [y,x,t]=step(num,den,t); plot(t,y)

  30. 执行机构和读取臂: 直流电机和手臂 预期磁 头位置 控制器: 放大器 实际磁 头位置 传感器: 磁头和索引磁道 8 命令行下的时域计算 磁盘驱动读取系统框图模型

  31. G1(s) 线圈D(s) G2(s)负载 R(s) E(s)Y(s) K 磁盘驱动读取系统框图模型 讨论: 增益K=10,80时系统阶跃指令(r(t)=u(t))的瞬态响应和扰动阶跃信号(d(t)=u(t))所产生的响应.

  32. G1(s) 线圈D(s) G2(s)负载 R(s) E(s)Y(s) K 磁盘驱动读取系统框图模型 解: 1 求反馈回路的传递函数,R(s)----Y(s); D(s)-----Y(s) 2 用step 函数求对应的响应,求响应的稳态值,画出曲线。

  33. 仿真作业 1 用Matlab 可以识别的格式输入下面两个矩阵 再求出它们的乘积C,并将 C矩阵的右下脚23子矩阵赋给D矩阵,赋值完成后,调用相应的命令查看matlab工作空间的占用情况。

  34. 仿真作业 2解线性方程 3 用for 循环结构编写程序,求出

  35. 第一部分数字仿真实验 实验2 Matlab/simulink及时域仿真 Simulink 是matlab提供的实现动态系统建模和仿真的一个软件包。 >>simulink Simulink Library Browser 窗口 Simlink 的基本模块库

  36. 第一部分数字仿真实验 实验2-1 Matlab/simulink及时域仿真 仿真步骤: • 根据系统模型建立mdl模型文件 • 在指定输入信号下进行数字仿真获得系统的时间响应曲线。 • 根据性能指标的定义计算系统的各项性能指标。

  37. 第一部分数字仿真实验 实验2-1 Matlab/simulink及时域仿真 在工作空间利用matlab提供的函数例如step,margin等也可以进行时域分析计算。

  38. 实验2 Matlab/simulink及时域仿真 实验2-2 simulink 模型举例 求解Van der Pol 方程 在.mdl模型文件中描述方程的关系 在matlab命令窗给参数赋值 mu=1;x01=1;x02=-2

  39. 实验2 Matlab/simulink及时域仿真 实验2-2 simulink 模型举例 求解具有非线性环节的控制系统 在.mdl模型文件中描述方程的关系 在matlab命令窗给参数赋值c=1;

  40. 实验2-2 Matlab/simulink及时域仿真 子系统(subsystem) 创建子系统

  41. 基于matlab函数的系统仿真分析 Matlab函数 pzmap, zp2tf, tf2zp, roots 求零极点图 num=[3 2 5 4 6]; den=[1 3 4 2 7 2]; [z,p,k]=tf2zp(num,den) pzmap(num,den) roots(den) [num1,dn1]=zp2tf(z,p,k) 当没有零点时, z=[ ]

  42. 应用simulink进行仿真 单位阶跃响应函数step 单位脉冲响应函数 impulse 任意输入下的响应函数 lsim [y,t,x] = lsim(sys,u,t) [y,t,x] = lsim(sys,u,t,x0) t = 0:0.01:5; u = sin(t); lsim(sys,u,t) sys=tf(num,den) [y,t,x]=lsim(sys,u,t)

  43. 应用simulink进行仿真 [num,den]=cloop(10,[1 2 0],-1) step(num,den) impulse(num,den) 例如: 单位负反馈系统的开环传递函数为 求系统的脉冲响应(稳定性)和动态性能指标.

  44. 实验 3 应用Matlab进行根轨迹分析 本节介绍的函数有rlocus, 调用方式: rlocus(num,den) [r,k]=rlocus(num,den) axis([minx maxx miny maxy]) 绘制根轨迹图 例题1:控制系统的开环传递函数为 绘制系统的根轨迹图。

  45. 实验 3 应用Matlab进行根轨迹分析 root-locus_examp1.m num=[1 5]; d1=conv([1 1],[1 2]); d2=conv([1 3],d1]); den=[d2 0]; rlocus(num,den) % 或 [num,den]=zp2tf([-5],[0 -1 -2 -3 ],3) [r,k]=rlocus(num,den); 绘制系统的根轨迹图。

  46. 实验 3应用Matlab进行根轨迹分析 作业题:控制系统的闭环传递函数为 • 绘制系统k变化时的根轨迹图; • 用根轨迹方法求当k=20时闭环的全部极点,给出单位阶跃响应曲线; • 讨论系统的闭环主导极点是哪些, 用主导极点法给出系统的单位阶跃响应, 将结果与2) 比较,并进行分析(可用解析法)。

  47. 实验 3应用Matlab进行根轨迹分析 例题2:控制系统的闭环传递函数为 解:写出根轨迹方程

  48. 实验 3应用Matlab进行根轨迹分析 root-locus_examp2.m 选择闭环复数的极点,-2.0,根轨迹增益k=20. 找出另一个极点-0.89 写出k=20时的闭环系统的所有极点和零点

  49. 实验 3 应用Matlab进行根轨迹分析 root-locus_examp2.m num=[1 1]; d1=conv([1 2],[1 3]); den=[d1 0]; rlocus(num,den) % 或 [r,k]=rlocus(num,den); 选择闭环复数的极点,-2.0,根轨迹增益k=20. 找出另一个极点-0.89 写出k=20时的闭环系统的所有极点和零点

  50. 实验 3应用Matlab进行根轨迹分析 系统的闭环的主导极点=? 观看系统的单位阶跃响应 nmb=k1*[1 4 3]; denb=[1 5 6+k1 k1]; step(numb,denb)

More Related