%1、编制一个解数论问题的函数文件:取任意整数,若是偶数,则用2除,否则乘3加1,重复此过程,直到整数变为1。
function f=NO_1(X);Y(1)=X;k=1;while (X~=1)k=k+1;if (mod(X,2)==0)X=X/2;elseX=3*X+1;endY(k)=X;endplot(Y,'b.')end% 2、编制程序产生一个数组,满足:a1=1,a2=1,从第三个元素开始,每个元素等于前两个元素的和,直到数组的前后两个元素的比值比小于1e-4,并且以红色点线的形式画出这个数组。
clear;A(1)=1;A(2)=1;i=3;Z=1;while (abs(Z)>=1e-4)A(i)=A(i-1)+A(i-2);Z=A(i-1)/A(i);i=i+1;endplot (A,'r.')% 3、编写一个函数,能够产生分段函数。
function y=test_3_1(X)if (X<=2)y=*X;elseif (X>6)y=;elsey=调用分段函数,绘制曲线。
clear;i=1;for j=0::2;x(i)=j;y(i)=test_3_1(j)*test_3_1(j+2);i=i+1;endplot(x,y)% 4、在2pi周期内画正弦函数曲线,并加注坐标轴标识和标题,然后在3pi/4,pi,5pi/4处分别加入带箭头的说明性文本,最后加注图例。
clear;t = 0:pi/50:2*pi;n = length(t);y = sin(t);plot(t,y,'-bo','linewidth',1 )xlabel('X');ylabel('Y');title('正弦函数曲线');text,, ' \leftarrow 3pi/4','FontSize',18);text,, ' \leftarrow 3pi/4','FontSize',18);text,,' \leftarrow 3pi/4','FontSize',18);hleg1 = legend('sin(x)');% 5、A为任意一个n*m矩阵,写程序来计算A中有多少个零元素,并输出个数。
A=input('输入一个矩阵 A = ')n=length(find(A==0))% 6、A为任意一个向量,写程序找出A 中的最小元素,并且输出这个最小元素。
A=input('输入一个向量 A = ');x=length(A);i=1;y=A(i);while (i<x)i=i+1;if (y>A(i))y=A(i);endenddisp('最小元素是:')disp(y)% 7、某系统由四个典型环节构成,试根据四阶龙格—库塔公式,求输出量y的阶跃响应,取仿真时间Tf=10s,%步长h=。
r = 1;P = [ 1 1;0 1 1 0;2 1 2 0;10 1 10 0];W = [0 0 0 -1;1 0 0 0;0 1 0 0;0 0 1 0];W0 = [1;0;0;0];Wc = [0 0 0 1];Tf = 10;h = ;A1 = diag(P(:,1));B1 = diag(P(:,2));C1 = diag(P(:,3));D1 = diag(P(:,4));H = B1 - D1*W;Q = C1*W - A1;A = inv (H) * Q;B = inv (H) * C1 * W0;x = [zeros(length(A),1)];y=[zeros(length(Wc(:,1)),1)] ;t = 0;for i = 1:Tf/hK1 = A*x + B*r;K2 = A*(x + h*K1/2) + B*r;K3 = A*(x + h*K2/2) + B*r;K4 = A*(x + h*K3) + B*r;x = x + h * (K1 + 2*K2 +2*K3 + K4)/6;y = [y,Wc*x];t = [t,t(i)+h];endplot(t,y)% 8、系统模型 1)判断系统的稳定性2)判定系统是否为最小相位系统。
num=[3 16 41 28] ;den=[1 14 110 528 1494 2117 112];[z,p,k]=tf2zp(num,den);pp=find(real(p)>0);n1=length (pp);if(n1>0)disp('系统不稳定⊙﹏⊙||| 不稳定极点是:')disp(p(ii));elsedisp('我靠,系统竟然稳定! .');endzz=find(real(z)>0);n2=length(zz);if (n2>0)disp('系统是最小相位系统~-。
-!')elsedisp('系统为非最小相位系统 @_@ ')endpzmap(p,z)% 9、对于典型二阶系统,请编写程序绘制时系统的单位阶跃响应。
clear;w=[2:2:10];zeta=;figure(1);hold onfor Wn=wnum=Wn.^2;den=[1,2*zeta*Wn,Wn.^2];step(num,den)endtitle('单位阶跃响应');hold off% 10、已知系统的传递函数,绘制对数幅频特性曲线,计算稳定裕度及其相对应的穿越频率和截止频率。
G=tf([8 ],[1 5 20 19 15 0])subplot(1,1,1);bodemag(G)%[Gm,Pm,Wcg,Wcp]=margin(G)求稳定裕度两种方法s=allmargin(G)% 11、已知单位负反馈系统的开环传函,要求设计一串联超前校正装置,满足性能指标。
num0=200;den0=conv([1 0],[ 1]);[Gm1,Pm1,Wcg1,Wcp1]=margin(n um0,den0);r=45;r0=Pm1;w=logspace(-1,3);[mag1,phase1]=bode(num0,den0 ,w);for epsilon=5:15phic=(r-r0+epsilon)*pi/180;alpha=(1+sin(phic))/(1-sin(phic) );[il,ii]=min(abs(mag1-1/sqrt(alph a)));wc=w(ii);T=1/(wc*sqrt(alpha));numc=[alpha*T,1];denc=[T,1];[num,den]=series(num0,den0,numc, denc);[Gm,Pm,Wcg,Wcp]=margin(num,den);if(Pm>=r);break;endendprintsys(numc,denc)printsys(num,den)[mag2,phase2]=bode(numc,denc ,w);[mag,phase]=bode(num,den,w);subplot(2,1,1);semilogx(w,20*log10(mag),w,2 0*log10(mag1),'--',w,20*log10(ma g2),'-');grid;ylabel('(幅值(dB)');title('--GO,,-GOGC');subplot(2,1,2);semilogx(w,ph ase,w,phase1,'--',w,phase2,'-.', w,(w-180-w),':');grid;ylabel('相角(度)');xlabel('频率(rad/sec)');title(['校正后:幅值裕度=',num2str(20*log10(Gm)),'dB, ','相角裕度=',num2str(Pm),'°','剪切频率=',num2str(Wcp),'Hz']);disp(['校正前:幅值裕度=',num2str(20*log10(Gm1)),'dB, ','相角裕度=',num2str(Pm1),'°','剪切频率=',num2str(Wcp1),'Hz']);disp(['校正后:幅值裕度=',num2str(20*log10(Gm)),'dB, ','相角裕度=',num2str(Pm),'°,','剪切频率=',num2str(Wcp),'Hz']);% 12、单位反馈系统的开环传函要求设计一串联滞后校正装置,使系统的相角裕度>=40,并保持原有的开环增益。
num0=4;den0=conv([1,0],[2,1] );[Gm1,Pm1,Weg1,Wcp1]=margin(n um0,den0);r=40;w=logspace(-3,1);[mag1,phase1]=bode(num0,den0 ,w);for epsilon=5:15r0=(-180+r+epsilon);[il,ii]=min(abs(phase1-r0));wc=w(ii);alpha=mag1(ii);T=5/wc;numc=[T,1];denc=[alpha*T,1];[num,den]=series(num0,den0,numc, denc);[Gm,Pm,Wcg,Wcp]=margin(num,den);if(Pm>r);break;endendprintsys(numc,denc);printsys(num ,den);[mag2,phase2]=bode(numc,denc,w); [mag,phase]=bode(num,den,w);subplot(2,1,1);semilogx(w,20*log10(mag),w,20*lo g10(mag1),'--',w,20*log10(mag2), '-.');grid;ylabel('(幅值(dB)');title('--GO,,-GOGC');subplot(2,1,2);semilogx(w,ph ase,w,phase1,'--',w,phase2,'-.', w,(w-180-w),':');grid;ylabel('相位(度)');xlabel('频率(rad/sec)');title(['校正后:幅值裕度=',num2str(20*log10(Gm)),'dB,','相角裕度=',num2str(Pm),'°']);disp(['校正前:幅值裕度=',num2str(20*log10(Gm1)),'dB,', '相角裕度=',num2str(Pm1),'°']);disp(['校正后:幅值裕度=',num2str(20*log10(Gm)),'dB,','相角裕度=',num2str(Pm),'°']);。