??? Error: File: E:\matlab\work\Untitled3.m Line: 35 Column: 26 Missing variable or function.
%8_1.mnum0=[200];den0=conv([1,0],[0.1,1],[1,10]);[Gm1,Pm1,Wcg1,Wcp1]=margin(num0,den0...
%8_1.m
num0=[200];
den0=conv([1,0],[0.1,1],[1,10]);
[Gm1,Pm1,Wcg1,Wcp1]=margin(num0,den0);
r=45;
r0=Pm1;
w=logspace(-2,2);
[mag1,phase1]=bode(num0,den0,w);
for epsilon=5:15
phic=(r-r0+epsilon)*pi/180;
alpha=(1+sin(phic))/(1-sin(phic));
[i1,ii]=min(abs(mag1-1/sqrt(alpha)));
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;end
end
printsgs(numc,denc)
printsgs(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*log10(mag1),'--',w,20*log10(mag2),'-');
grid;
ylabel('幅值(dB)');
title('-- G0,-. Gc,-GOGc');
subplot(2,1,2);
semilogx(w,phase,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),'°']); 展开
num0=[200];
den0=conv([1,0],[0.1,1],[1,10]);
[Gm1,Pm1,Wcg1,Wcp1]=margin(num0,den0);
r=45;
r0=Pm1;
w=logspace(-2,2);
[mag1,phase1]=bode(num0,den0,w);
for epsilon=5:15
phic=(r-r0+epsilon)*pi/180;
alpha=(1+sin(phic))/(1-sin(phic));
[i1,ii]=min(abs(mag1-1/sqrt(alpha)));
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;end
end
printsgs(numc,denc)
printsgs(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*log10(mag1),'--',w,20*log10(mag2),'-');
grid;
ylabel('幅值(dB)');
title('-- G0,-. Gc,-GOGc');
subplot(2,1,2);
semilogx(w,phase,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),'°']); 展开
1个回答
展开全部
title(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
disp(['校正前:幅值裕量=',num2str(20*log10(Gm1)),'dB,','相位裕量=',num2str(Pm1),'°']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
这三条语句的第一个逗号改成英文输入
title(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
disp(['校正前:幅值裕量=',num2str(20*log10(Gm1)),'dB,','相位裕量=',num2str(Pm1),'°']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
disp(['校正前:幅值裕量=',num2str(20*log10(Gm1)),'dB,','相位裕量=',num2str(Pm1),'°']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
这三条语句的第一个逗号改成英文输入
title(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
disp(['校正前:幅值裕量=',num2str(20*log10(Gm1)),'dB,','相位裕量=',num2str(Pm1),'°']);
disp(['校正后:幅值裕量=',num2str(20*log10(Gm)),'dB,','相位裕量=',num2str(Pm),'°']);
追问
我发现运行程序之后达不到题目的要求“相位裕量》=45°,剪切频率》=50赫兹”你帮我看一下怎么改程序?
追答
不好意思,你再请教高人吧,不懂技术。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询