1、根据提示找到出错位置和原因,加以改正,再进行编译如此反复,直到顺利通过编译和连接为止。 (5)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同数据时所得到的结果是否正确,应多运行几次,分别检查在不同情况下程序是否正确。 (6)输出程序清单和运行结果。4.实验后,应整理出实验报告,实验报告应包括: 实验题目;源程序;5.实验内容的安排本实验教材给出4个实验内容,学生应在实验前将教师指定的题目编好程序,然后上机输人和调试。2 关于程序调试 为了帮助大家调试程序和分析程序,下面简单介绍程序出错的种类。(1)语法错误不符合MATLAB语言的语法规定例如将plot写为polt、括弧不匹配
2、、变量命名错误等,这些都会在编译时被发现并指出。这些都属于“致命错误”。不改正是不能通过编译的。对一些在语法上有轻微毛病但不影响程序运行的问题(如定义了变量但始终未使用),编译时会发出“警告”虽然程序能通过编译,但不应当使程序“带病工作”应该将程序中所有导致错误(error)和警告(warning)的因素都排除,再使程序投入运行。(2)逻辑错误程序无语法错误,也能正常运行,但是结果不对。例如求s=l23十十100。有人写出以下语句:s=1;for i=1:100 s=s+i;end;sum=s语法没有错,但求出的结果是l123十100之和,而不是l23十十100之和。这类错误可能是设计算法时的
3、错误,也可能是算法正确而在编写程序时出现疏忽所致。这种错误计算机是无法检查出来的。如果是算法有错,则应先修改算法,再改程序。如果是算法正确而程序写得不对,则直接修改程序(3)运行错误有时程序既无语法错误,又无逻辑错误,但程序不能正常运行或结果不对。多数情况是数据不对,包括数据本身不合适以及数据类型不匹配。3 Matlab 基础练习(不上交)(1)生成矩阵i) 创建如下矩阵 和ii) 创建C:一个33 单位阵,用最方便的方法。(2)基本矩阵运算运用问题1.1中得到的矩阵A和B,i) 对比A* B 和 A.*B 的结果,并解释MATLAB是如何得出相应的结果。ii) A* B=B*A吗?为什么?i
4、ii) A .* B= B .* A 吗? 为什么?iv)创建矩阵D=B,并计算B* D =?v) 比较A/B AB,并解释所得结果?vi) 创建一个新的 33 矩阵 E ,主对角线元素为5,其它元素为0。(3)脚本程序输入并编辑一个脚本文件程序来计算,并输出结果。(4)函数文件运行一个自己编写的函数文件程序来计算,并输出结果。(5)制图,(a noisy version of y),。i) 用plot将两条曲线画在同一个坐标轴上,原函数用实线,加噪音的函数用开圆(或其它标示符)区分,颜色随意。图及横纵坐标轴需要标注名称,图标标识不同曲线。ii) 用hold on 将两条曲线画在同一个坐标轴上
5、,其它要求同i),加上网格。iii) 用subplot将两条曲线画在同一幅图的两个不同的坐标轴上,其它要求同 i)。第2部分 实验内容实验1 PID控制1.1实验目的:编程实现PID控制算法。1.2实验内容: 二阶系统的时域响应。下面是一个单位阶跃响应,已知系统是一阶线性系统,其传递函数为G(s)。系统内嵌在反馈控制回路中,如下图所示,闭环系统也是一阶的。(1)系统G(s)的开环参数(DC 增益和时间常数) 分别为: 5 3.2 (2)稳态输出和稳态输入之间的关系? 5:1 (3)若要稳态误差不大于2%,比例增益K的应该为多大? (SSE2%时,比例增益至少为多少?)K=10(4)系统G(s)
6、的闭环参数(DC 增益和时间常数) 分别为多少?以K的函数形式给出。 Gdc=5k/(5k+1) Ts=3.2/(5k+1)(5)建立开环传递函数。用你在上面步骤中得到的数值写成如下形式: G(s) = Gdc/(s + 1) G(s) = 5/(s*3.2 + 1)(6)建立仿真模型,用Matlab得到系统的阶跃响应,观察比例增益K变化时系统响应的变化,并对比分析仿真结果来验证理论分析的结果.1.3实验程序:l. 学习Matlab中和本实验相关的命令。figurefor-endtf、step(num,den)grid、title、hold on、hold off2 保存或复制实验曲线和数据。
7、1.4实验结果:1 给出相应程序代码并记录实验程序的运行结果。2 分析比例增益K对系统响应的影响。程序:clear all;t=0:0.1:20;num=5;den=3.2 1;plant=tf(num,den);figure(1)step(plant,t),axis(0 20 0 6);grid onfigure(2)Kp=10:1:m=0:0.001:1;hold onfor contr=Kp;sys_cl=feedback(contr*plant,1);%建立单位负反馈的系统的传递函数step(sys_cl,m);hold off图像:K对系统的影响:K越大,上升时间越短,调整时间也越短
8、。实验2 根轨迹2.1实验目的:绘制根轨迹。2.2实验内容:反馈系统如下图。系统有一个可调的增益放大器,系数为K。被控对象传递函数为:G(s) = (s + 5)/(s + 1)(s + 3)需要你分析一下系统的行为。 画出作为增益的函数的闭环系统的根轨迹。(i) 明确指出极点离开实轴的点或者是进入实轴的点。 1/(d+1)+1/(d+3)=1/(d+5) d1=-2.1716 d2=-7.8284(ii)给出那些点出现时的K值。k = 11.6569 k = 0.34322.3实验程序:1、学习根轨迹、零极点图绘制的相关语句。rlocus(sys)k,p=rlocfind(num,den)g
9、textpzmap(p,z)num,den=feedback(num,den,1)2、运行实验程序,观察试验结果。3、保存或复制实验曲线和数据。2.4实验结果分析1、给出相应程序代码并记录实验程序的运行结果。2、分析放大系数K对根轨迹影响,并分析放大系数K系统稳定性的影响。num=1 5;den=conv(1 1,1 3);sys=tf(num,den);pzmap(sys);p,z=pzmap(sys);legend(极点,零点);rlocus(sys);k,p1=rlocfind(num,den)k,p2=rlocfind(num,den)系统已经稳定,调节K对系统不会有影响实验3 伯德图
10、补偿 3.1实验目的:MATLAB辅助设计控制系统。3.2实验内容:绘制伯德图,并进行补偿分析。下面是一个带可变增益的闭环系统。被控对象G(s) = 2/(0.5s + 1)(s2 + 4s + 1)。画出G(s) 的伯德图。(i)确定系统G(s)的相角裕量和幅值裕量。 Gm=22.3db Pm=102deg(ii)确定相角裕量为40o时的增益K。 k=3.9670(iii)确定相角裕量为40o时阶跃输入的可达SSE,是否令人满意? SSE=(1-DCGAIN(sys_cl)/1=0.1119 令人满意3.3实验程序:1、学习频率绘制相关语句。bode(num,den)num,den=zp2t
11、f(z,p,k)logspacesubplot、xlabel、margin2、运行实验程序,观察结果。3.3实验结果分析num=0 2;den=conv(0.5 1,1 4 1);sys=tf(num,den)bode(sys)margin(sys)for k=3:4; k1=k; sys1=k1*sys; Gm,Pm,Wcg,Wcp=margin(sys1); if (Pm-40)/40 -0.0001)&(Pm-40)/40 0.0001) k1 Pm figure(3) margin(sys1) grid on break; end end sys_cl=feedback(sys1,1)
12、 figure(4) step(sys_cl) SSE=1-dcgain(sys_cl)2、 观察程序画出的bode图,与手绘图进行比较。3、 在bode图上读出相角裕量和幅值裕量,并判断闭环系统的稳定性。Gm=22.3db Pm=102deg 系统稳定实验4 奈奎斯特图4.1实验目的:4.2实验内容:绘制奈奎斯特图,并进分析。1、请手绘一下系统的奈图,给出高频渐进线、Dc增益点,实虚轴交点及所在的频率,并用nyquist命令自动生成奈图,进一步验证所绘制的奈图的正确性。a.一阶系统 G(s) = 1/(s + 1)b.二阶系统 G(s) = 1/(s + 1)2c.三阶系统 G(s) = 1/(s + 1)32、用nyquist命令直接绘制高阶系统的奈图。3、用nyquist命令直接绘制复极点系统的奈图。4、用nyquist命令直接绘制系统的奈图,并判断闭环系统的稳定性。4.3实验程序:1、学习Matlab语言与本实验相关的语句nyquist(num,den)2、运行实验程序。4.4实验结果:程
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1