声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1221|回复: 2

[求助]二阶环如何应用在具体应用实例(希望提供者suffer看下)!谢谢!

[复制链接]
发表于 2006-1-9 23:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下边是一个别人给我的代码程序,可我刚学MATLAB不久,不知道如何调用,请高人指点下,给个调用的实例,不胜感激!<br><br><br><br>example:仿真锁相环工作到一定时间后达到锁定状态的过程 <br><br>
<P>    本程序仿真了锁相环工作到一定时间后达到锁定状态的过程,程序采用的是一阶RC低通滤波器即二阶一型环,环路方程为:<SUB><IMG src="http://course.cuc.edu.cn/course/shen/htm/005/101.files/image008.gif"></SUB>,输入信号设为<SUB><IMG src="http://course.cuc.edu.cn/course/shen/htm/005/101.files/image016.gif"></SUB>,简单考虑,这里采用初始相位为0。程序默认输入信号频率f<SUB>in</SUB>=800kHz,压控振荡器固有振荡频率f<SUB>oo</SUB>=1000kHz。</P>
<P>源代码:</P>
<P>function[tt1,t1,fs,fo]=My_pll(fin,foo,Ad,T,Ao,th0,dt);</P>
<P>global A fi fo</P>
<P>if nargin&lt;1;fin=640;foo=800;Ad=1;Ao=2*pi*fo;T=80/foo;th0=[0 0];th0=[0 0];dt=1/(4*foo);end;</P>
<P>%--------------------------------------------------------------------------</P>
<P>fo=foo;fi=fin;A=Ao*Ad;</P>
<P>dT=1/(10*fi);[t,th]=ode45('solver',0:dT:T,th0);</P>
<P>t1=0:dt:T-dt;</P>
<P>th1=spline(t,th(:,1),t1);th2=spline(t,th(:,2),t1);</P>
<P>f=th2/(2*pi)+fo;</P>
<P>%--------------------------------------------------------------------------</P>
<P>mstr=['锁相环路动态仿真--绿色:瞬时频差Δw(t)||红色:相位差 φе(t)||黄色:零参考线。'];</P>
<P>figure('Units','normal','pos',[0.09 .12 .8 .8],'color','k');%,'color','k'</P>
<P>set(gcf,'NumberTitle','off','Name',mstr);</P>
<P>dtt=f-fi;</P>
<P>t2=0:dt:t1(end/2);</P>
<P>y=sin(0*t2);</P>
<P>dth=pi/2*fi*t1+th1;</P>
<P>for i=1:160</P>
<P>subplot(211);</P>
<P>plot(t1(1:i),dtt(1:i),'g',t1(i),dtt(i),'ro',t2,y,'y:');</P>
<P>axis off;legend('瞬时频差' ,[520 435 20 10]);</P>
<P>subplot(212); </P>
<P>plot(t1(1:i),dth(1:i),'r',t1(i),dth(i),'go',t2,y,'y:'); legend('相  位  差' ,[520 420 20 10]);</P>
<P>axis off;</P>
<P>pause(0.000001);</P>
<P>uicontrol('pos',[20 20 60 20],'string','关闭','fontsize',12, ...</P>
<P>   'callback','close(gcbf)'); </P>
<P>end</P>
<P>pause(0.001);</P>
<P>m=40;n=length(t1);n2=n-m-250;</P>
<P>T=m*dt;dt=0.1*dt;fs=1/dt;</P>
<P>tt1=0:dt:T; tt2=t1(n2)+tt1-20*dt;</P>
<P>vc=th2/Ao;  </P>
<P>v2=spline(t1(n2:n),vc(n2:n),tt2);</P>
<P>y2=vco(v2,fo,fs);</P>
<P>y12=sin(2*pi*fi*tt2);</P>
<P>nstr=['环路的捕获过程动态演示---绿:vo(t) 红:vi(t) fi='];</P>
<P>nstr=[nstr num2str(fi) '(kHz),fo=' num2str(fo) '(kHz)'];</P>
<P>H2=figure('Name',nstr,'Num','off','Pos',[92 78 815 610],'color','k');</P>
<P>for i=1:210</P>
<P>plot(tt2(1:i),y2(1:i),'g',tt2(1:i),y12(1:i),'-.r',tt2(i),y2(i),'ro',tt2(i),y12(i),'go');</P>
<P>set(gca,'units','pix','pos',[22 150 800 350]);legend('输出信号' ,'输入信号',[520 440 20 10]);</P>
<P>axis off;pause(0.0000001);</P>
<P>uicontrol('pos',[20 20 60 20],'string','关闭','fontsize',12, ...</P>
<P>   'callback','close(gcbf)');  </P>
<P>end<br><br>还有个问题:是不是还缺solver个文件????<br></P>
[此贴子已经被VibInfo于2006-1-10 20:28:53编辑过]

回复
分享到:

使用道具 举报

发表于 2006-1-10 09:39 | 显示全部楼层

回复:(糖葫芦)[计算编程][求助]麻烦大家给看下这个...

调My_pll就行了<br>输入参数为:fin,foo,Ad,T,Ao,th0,dt,具体你自己看是什么东西吧<br>输出参数为:tt1,t1,fs,fo
[此贴子已经被作者于2006-1-10 9:39:41编辑过]

发表于 2006-1-10 09:40 | 显示全部楼层

回复:(糖葫芦)[计算编程][求助]麻烦大家给看下这个...

solver是你要求解的方程
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-26 21:47 , Processed in 0.076367 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表