收藏 分销(赏)

Matlab作业答案.docx

上传人:s4****5z 文档编号:8796589 上传时间:2025-03-02 格式:DOCX 页数:26 大小:315.56KB
下载 相关 举报
Matlab作业答案.docx_第1页
第1页 / 共26页
Matlab作业答案.docx_第2页
第2页 / 共26页
点击查看更多>>
资源描述
控制系统的MATLAB仿真与设计 - 实验作业 第二章 数据结构及其运算 2.1实验程序: x=[12 23 34 45 56 67 78] %逐个输入数组中的元素值 x(6) %读数组中的第6个元素 x([1 3 5]) %返回数组的第1、3、5个元素构成的子数组 x(4:end) %返回第4个元素与其后所有元素构成的子数组 x(find(x>70)) %返回数组中大于70的元素的值 MATLAB分步截屏: 创建一个有7个元素的一维数组: 直接寻访一维数组的第6个元素: 寻访一维数组的第1,3,5个元素: (3)寻访一维数组中第4个至最后一个元素: 寻访一维数组中大于70 的元素: 2.3 实验程序: A=zeros(2,5) %生成2行5列的全0数组 A(1:10)=-4:5 %将单下标为1到10的元素分别赋值为-4到5 L=abs(A)>3 %判断其绝对值是否大于3,大于则L对应的位置为值1,否则为L值为0 islogical(L) %判断L是否为逻辑数组,是逻辑数组则返回1,否则返回0 X=A(L) % X为逻辑数组L对应为1的位置的数据的列向量 MATLAB分步截屏: 生成数组: 寻访数组A中绝对值大于3的元素: 输出数组A中绝对值大于3的元素: 2.5实验程序: p1=[1,0,2]; %定义多项式p1(s)=s2+1 p2=[1,4]; %定义多项式p2(s)=s+4 p3=[1,1]; %定义多项式p3(s)=s+1 p4=conv(p1,conv(p2,p3)); %定义多项式p4(s)=p1(s)p2(s)p3(s) p5=[1 0 1 1]; %定义多项式p5(s)=s3+s+1 [q,r]=deconv(p4,p5); % 求p4(s)/p5(s) disp(['商:',poly2str(q,'s')]); disp(['余式:',poly2str(r,'s')]) MATLAB实验截屏: 2.6实验程序: A=[12 23 34;45 56 67;78 89 90]; %定义3阶数组A p1A=poly(A); %创建方阵A的特征多项式p1A p2A=poly2str(p1A,'s') %将拟合后的p1A多项式系数转换为字符形式的特征多项式函数p2A MATLAB实验截屏: 第四章 M文件和程序设计 4.2实验程序exp4_2: x=input('请输入半径r的值:'); %将用户键入量赋给x s=f1(x); %调用函数f1(x)计算面积S c=f2(x); %调用函数f2(x)计算面积C disp(['圆的面积S为:',num2str(s)]) %用num2str将数值变量转换为字符变量并用disp输出带数值的文本信息 disp(['圆的周长C为:',num2str(c)]) 实验程序-面积函数文件f1: function s=f1(x) %自定义函数f1(x) s=pi*x*x; end 实验程序-周长函数文件f2: function c=f2(x) %自定义函数f2(x) c=2*pi*x; end MATLAB截屏: 4.3实验程序exp4_3: sum=0; %定义变量sum n=input('请输入n的值:') %并将用户键入量赋给变量n,并显示“请输入n的值” for i=1:n % i从1取到n sum=sum+1/i^2; %依次求sum的值 end disp(['计算结果为:',num2str(sum)]) %用num2str将数值变量转换为字符变量并用disp输出带数值的文本信息 MATLAB截屏: 4.5实验程序exp4_5: sum=0; %变量sum的初值是0 n=0; %变量n的初值是0 while sum<2000 %当sum值小于2000时 n=n+1; %n=n+1 sum=sum+n; %sum为n的累加和 end disp(['最大的n值为:',num2str(n-1)]) %最后一次循环,sum+n后得到的sum值大于2000,因此最后输出的最大n值应为n-1 MATLAB截屏: 4.6(1)使用for循环时: 实验程序exp4_6_1: sum=0; %定义变量sum,其初值为0 for i=0:63 % i从0取到63 sum=sum+2^i; %依次求sum的累加 end disp(['K=',num2str(sum)]) MATLAB截屏: (2)使用while循环时: 实验程序exp4_6_2: sum=0; %定义变量sum,其初值为0 i=0; %定义变量i,其初值为0 while i<=63 %当i≦63时 sum=sum+2^i; %依次求sum的累加 i=i+1; end disp(['K=',num2str(sum)]) MATLAB截屏: 第五章 数值计算 5.1用LU分解求解下列线性方程组: 2x1+x2-5x3+x4=13x1-5x2+7x4=-92x1+x3-x4=6x1+6x2-x3-4x4=0 实验程序exp5_1: A=[2,1,-5,1;1,-5,0,7;2,0,1,-1;1,6,-1,-4]; b=[13,-9,6,0]'; [L,U]=lu(A); %进行LU分解 x=U\(L\b) %线性方程组的解 MATLAB结果: 5.2设fx,y,z=x+y24x+z2y+2z ,求函数f在(0.5,0.5,0.5)附近的最小值: 实验程序exp5_2: fun=inline('x(1)+x(2)^2/(4*x(1))+x(3)^2/x(2)+2/x(3)','x') %使用内联函数构造函数fun [x,fval]=fminsearch(fun,[0.5,0.5,0.5]) %求函数fun在(0.5,0.5,0.5)附近的最小值 MATLAB结果: 5.5有初值问题: y'=y2-t-24(t+1) 0≤t≤1y0=2 试求其数值解,并与下式精确解作比较:yt=t+1+1 实验程序exp5_5: OdeFun=inline('(y^2-t-2)/(4*(t+1))') %内建函数编写待求微分方程 ts=[0,1]; %自变量求解区间 y0=2; %初值条件 [t,y]=ode23(OdeFun,ts,y0); %2、3阶龙格库塔法求解微分方程数值解 y1=sqrt(t+1)+1; %微分方程精确解 [t,y,y1] %以三列矩阵显示,第一列为采样点t对应的点,第二列为期数值解,第三列为其精确解 MATLAB结果: 第七章 Simulink基础 7.1单位负反馈系统的开环传递函数为 Gs=1000s(0.1s+1)(0.001s+1) 应用Simulink仿真系统构建其阶跃响应曲线。 (1)Simulink仿真: (2)系统输出: (3)验证: 应用Matlab函数step进行验证如下,系统单位阶跃响应的稳态值为1: 7.2系统微分方程为x1'=x2tx2'=x2e-0.5t ,试建立系统Simulink仿真模型。 Simulink仿真: ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ 仿真图中位置处的信号说明如下: ① 时钟信号t ② 信号x2 ③ x1'=x2t ④ 输出信号x1 ⑤ -0.5t ⑥ e-0.5t ⑦ 信号x2 ⑧ x2'=x2e-0.5t ⑨ 信号x2 7.3利用Simulink构建函数曲线y=5t2+16。 (1)Simulink搭建仿真电路: 将时钟信号做平方数学运算得到单位抛物线函数,扩大5倍后与常数输入16叠加作为系统给定输入。 (2)系统输出: ①示波器Scope输出函数曲线 y=5t2+16: ②示波器Scope1输出单位抛物线曲线 y=t2: (3)验证: 在命令窗口输入程序:>> x=0:0.001:10; >> y=5.*x.*x+16; >> plot(x,y,'k-') >> grid on 与示波器Scope得出的仿真结果相同。 7.4利用Simulink仿真I=01xln(1+x)dx。 (1)Simulink截图: 将时钟信号与常数输入1相加后做自然对数ln数学函数运算,再与时钟信号相乘叠加后做积分运算,将仿真时间设为1s,输出。 (2)系统输出: ①数字显示模块显示积分结果为0.25: ②示波器Scope输出积分结果随积分时间t的变化: ③示波器Scope1输出积分函数曲线I=01xln(1+x)dx: (3)验证: ①积分结果验证: 输入程序:>> x=0:0.001:1; >> y=x.*log(1+x); >> trapz(x,y) s = 0.2500 积分结果为0.25,Simulink仿真在t=1s时输出为0.25,两者结果相同。 ②积分函数曲线验证: 输入程序:>> plot(x,y) >> plot(x,y,'k-') >> grid on 输出积分函数图像如下,与Simulink仿真示波器Scope1输出结果相同: 7.6利用使能子系统构成一个正弦半波整流器。 (1)Simulink仿真: 使用电平触发的Enabled Subsystem子系统,当使能信号为高电平的时候运行子系统,得出正弦半波整流波形。 (2)系统输出: 第八章 控制系统的数学模型 8.1创建连续二阶系统的传递函数模型 (1)G(s)=5s2+2s+2 实验程序exp8_1_1: num=[0,0,5]; %分子多项式的系数 den=[1,2,2]; %分母多项式的系数 sys=tf(num,den) %建立系统的TF模型 MATLAB截屏: (2)G(s)=5s2+2s+2e-2s 实验程序exp8_1_2: num=[0,0,5]; den=[1,2,2]; sys=tf(num,den); sys.inputdelay=2 %输入信号的滞后时间为2秒 MATLAB截屏: 8.2已知系统的传递函数为G(s)=2(s+0.5)(s+0.1)2+1,建立系统的传递函数模型,并转换为零极点模型 实验程序exp8_2: s=tf('s'); G1=2*(s+0.5)/((s+0.1)^2+1) %直接用数学运算符建立系统的TF模型并显示 num=G1.num{1}; %通过属性名访问分子的系数并赋给数组num den=G1.den{1}; %通过属性名访问分母的系数并赋给数组den sys=tf(num,den); %以num和den建立TF模型 [z,p,k]=tf2zp(num,den); %将TF对象的属性转换为ZPK对象的属性 G2=zpk(z,p,k) %建立系统的ZPK模型 MATLAB截屏: 8.4已知系统的方框图如下,其中R1=1,R2=2,C1=3,C2=4,计算系统的∅s=C(s)R(s)。 实验程序exp8_4: s=tf('s'); %直接用数学运算符建立各个环节的TF模型 sys1=1+0*s; sys2=1/(3*s); sys3=1/2+0*s; sys4=1/(4*s); sys5=-1+0*s; sys6=-1+0*s; sys7=-1+0*s; sys8=1+0*s; %sys8是sys2、sys3之间银触点和汇合点之间的连线,因为前后信号不同,所以不能合并,需要建立成一个环节 sys=append(sys1,sys2,sys3,sys4,sys5,sys6,sys7,sys8);%扩展成无连接状态空间模型 Q=[1 5 0;2 1 7;3 8 6; 4 3 0;5 2 0;6 4 0;7 3 0;8 2 0]; %写出系统的连接矩阵 inputs=1; %sys1的输入为系统的总输入 outputs=4; %sys4的输出为系统的总输出 sysc=connect(sys,Q,inputs,outputs) %生成组合后的整体系统 MATLAB截屏: 第九章 控制系统的分析 9.1实验程序: num=[2,5,1]; den=[1,2,3]; sys=tf(num,den); %建立系统的传递函数模型 rlocus(sys); %绘制根轨迹图 figure %绘图命令 bode(num,den); %绘制伯德图 grid on figure nyquist(num,den); %绘制奈奎斯特图 MATLAB结果: (1)根轨迹图: (2)伯德图: (3)奈奎斯特图: 9.2 实验程序: num=[5,25,30]; den=[1,6,10,8]; sys=tf(num,den); %建立系统的传递函数模型 step(sys) %绘制系统的单位阶跃响应曲线 figure impulse(sys) %绘制系统的理想单位脉冲响应曲线 MATLAB结果: (1)单位阶跃响应: (2)单位脉冲响应: 第十章 基于传递函数模型的控制系统设计 10.4考虑一个单位负反馈控制系统,其前向通道传递函数为 G0s=1s2(s+5) 试应用伯德图法设计一个超前校正装置Gcs=Kcα(Ts+1αTs+1) ,使得校正后系统的相角裕量γ=50°,幅值裕度Kg≥10dB,带宽ωb=1~2rad/s。其中,0<α<1。试问已校正系统的谐振峰值Mr和谐振角频率ωr的值各为多少? (1)源程序exp10_4: ng0=[1]; dg0=[1,5,0,0]; t=[0:0.01:5]; w=logspace(-3,2); disp('校正前系统开环传递函数为:') g0=tf(ng0,dg0) b1=feedback(g0,1); %校正前系统闭环传函 [gm,pm,wcg,wcp]=margin(g0); %校正前系统频域参数 disp(['校正前系统频域参数:','相角裕度',num2str(pm),' ','幅值裕度',num2str(gm)]) Pm=55; %校正后系统的相角裕度(保留一定预留量) [ng1,dg1]=fg_lead_pm(ng0,dg0,Pm,w); %利用超前校正进行校正 disp('校正环节传递函数为:') g1=tf(ng1,dg1) %校正环节传递函数 disp('校正后系统开环传递函数为:') g2=g0*g1 %校正后前向通道传函 [gm1,pm1,wcg1,wcp1]=margin(g2); %校正后系统参数 disp(['校正后系统频域参数:','相角裕度',num2str(pm1),' ','幅值裕度',num2str(gm1)]) bode(g0,'r--',g1,'b--',g2,'g',w) grid on b2=feedback(g2,1); %校正后系统闭环传函 [mag,phase,w]=bode(b2);%对校正后系统闭环传函bode图进行离散化 Mr=max(mag); %求取Mr disp(['校正后系统谐振峰值Mr:',num2str(Mr)]) a=find(mag==Mr);%求Mr对应的脚标 wr=w(a); %求wr disp(['校正后系统谐振峰值角频率wr:',num2str(wr)]) b=find(mag<=0.707*mag(1));%求幅值小于0.707倍零频幅值的脚标所组成的数组 wb=w(b(1));%求wb disp(['校正后系统的带宽wb:',num2str(wb)]) 源程序fg_lead_pm: function [ngc,dgc]=fg_lead_pm(ng0,dg0,Pm,w) [mu,pu]=bode(ng0,dg0,w); [gm,pm,wcg,wcp]=margin(mu,pu,w); alf=ceil(Pm-pm+5); phi=(alf)*pi/180; a=(1+sin(phi))/(1-sin(phi)); a1=1/a; dbmu=20*log10(mu); mm=-10*log10(a); wgc=spline(dbmu,w,mm); T=1/(wgc*sqrt(a)); ngc=[a*T,1]; dgc=[T,1]; (2)MATLAB仿真结果: 从仿真结果可知,校正后系统满足预期的相角欲量和带宽要求,但幅值裕量为8.8907,略微低于题目要求。此时通过增加相角预留量重新进行系统校正发现,校正后系统幅值裕度增加缓慢,但相较于量和带宽有明显提高(如下表所示)。为了保证系统的平稳性,选择预留量为ε=5°,此时相角裕度如仿真结果。 相角裕度 幅值裕度 带宽 相角预留量ε=0° 51.098 8.3933 1.7055 相角预留量ε=5° 55.1177 8.8907 1.9373 相角预留量ε=8° 57.3808 9.3199 1.9816 表10-5 选择不同的ε时系统的频域参数 10.5 考虑一个单位负反馈控制系统,其前向通道传递函数为 G0s=Ks(s+1)(s+4) 试应用伯德图法设计一个校正装置Gcs,使得校正后系统的静态速度误差常数Kv=10s-1,相角裕量γ=50°,幅值裕度Kg≥10dB。 (1)源程序exp10_5: kk=40; %校正后系统开环增益kk=4*kv ng0=kk*[1]; dg0=conv([1,0],conv([1,1],[1,4])); t=[0:0.01:5]; w=logspace(-3,2); disp('校正前系统开环传递函数为:') g0=tf(ng0,dg0) %校正前系统开关传递函数 [gm,pm,wcg,wcp]=margin(g0); %校正前系统开环传递函数的频域特性参数 disp(['校正前系统频域参数:','相角裕度',num2str(pm),' ','幅值裕度',num2str(gm)]) Pm=64.5; %期望相角裕量(留有一定的预留量) [ng1,dg1]=fg_lead_pm(ng0,dg0,Pm,w); %利用超前校正进行校正 disp('校正环节传递函数为:') g1=tf(ng1,dg1) %校正环节传递函数 disp('校正后系统开环传递函数为:') g2=g1*g0 %校正后前向通道传函 [gm1,pm1,wcg1,wcp1]=margin(g2); %校正后系统频域参数 disp(['校正后系统频域参数:','相角裕度',num2str(pm1),' ','幅值裕度',num2str(gm1)]) bode(g0,'b',g1,'r',g2,'g',w) grid on (2)MATLAB仿真结果: 第十一章 基于状态空间模型的控制系统设计 11.1考虑单输入系统:x=Ax+bu,其中:A=010001-1-5-6,b=001。利用状态反馈控制u=-Kx,希望该系统的闭环极点为s1,2=-2±j4和s3=-10。确定状态反馈增益矩阵K。 (1)源程序exp11_1: %利用Bass-Gura算法配置单输入系统极点 A=[0 1 0;0 0 1;-1 -5 -6]; b=[0;0;1]; p=[-2+i*4;-2-i*4;-10]; disp('状态反馈增益矩阵K为:') K=bass_pp(A,b,p) (2)MATLAB仿真结果: 11.8 考虑系统:x=Ax+buy=cx,其中:A=020.610,b=01,c=01。试设计一个全维状态观测器,使得观测器所期望的特征值为:s1,2=-1.8±j2.4。 (1)源程序exp11_8: A=[0 20.06;1 0]; b=[0;1]; c=[0 1]; D=0; p=eig(A)' p1=p; p1(1:2)=[-1.8+i*2.4;-1.8-i*2.4]; %观测器极点配置 L=place(A',c',p1)' eig(A-L*c)' %观测器的状态观测值输出 [xh,x,t]=simobsv(A,b,c,D,L); (2)MATLAB仿真结果: 26
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服