aaa.m

来自「某单位负反馈控制系统的开环传递函数为」· M 代码 · 共 42 行

M
42
字号
clear;clc;                               

numo=40;                                 
deno=conv([1 0],[1 2]);    
w=0.01:1000;
[mag1,phase1]=bode(numo,deno,w);

[gm1,pm1,wcg1,wcp1]=margin(numo,deno);
r=30;
ro=pm1;
e=10;
phic=(r-ro+e)*pi/180;                   
alphao=(1+sin(phic))/(1-sin(phic));     
[io,jo]=min(abs(mag1-1/sqrt(alphao)));   
wco=w(jo);
T=1/(wco*sqrt(alphao));
numc=[alphao*T 1];denc=[T 1];
[num,den]=series(numo,deno,numc,denc);
[gm,pm,wcg,wcp]=margin(num,den);

printsys(numc,denc);
printsys(num,den);
[mag2,phase2]=bode(numc,denc,w);
[mag,phase]=bode(num,den,w);
alpha=(1+sin(phic))/(1-sin(phic));
[i,j]=min(abs(mag-1/sqrt(alpha)));
wc=w(j);

subplot(211);
semilogx(w,10*log10(mag),w,10*log10(mag1),'--',w,10*log10(mag2),'-.');
grid,ylabel('幅值(db)');
title('---Go,-,Gc,GoGc');

subplot(212);
semilogx(w,phase,w,phase1,'--',w,phase2,'-',w,(w-180-w),':');
grid;ylabel('相位(。)');xlabel('频率(rad/s)')
title(['校正前:剪切频率=',num2str(wco),'rad/s',';','相位裕量=',num2str(pm1),'。','校正后:剪切频率=',num2str(wc),'rad/s',';', '相位裕量=',num2str(pm),'。']);

disp(['校正前:剪切频率=',num2str(wco),'rad/s',';', '相位裕量=',num2str(pm1),'。']);
disp(['校正后:剪切频率=',num2str(wc),'rad/s',';', '相位裕量=',num2str(pm),'。']);
        
        

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?