继续讲解环路的内容!

分享一个AFC环路的程序。

%-----仿真用叉积环产生相差,再转化为频差输入

%----参数依旧选用等效滤波器参数Cp1和Cp2的计算方法。

%----噪声带宽15hz,Kp=1时,相位变换,误差信号转化为频率信号直接调节频率成功,效果可以。I路是指与sin相乘的结果,变成与cos相乘后无法成功。

%----明显看出fre是有抖动的,这个和噪声带宽有关系,不过噪声带宽设置的大小明显比锁相环跟踪时设置的小了,,当然结果中有残留频偏。

%---------------------仿真点数有10000个点-------------

load gold121.mat;

npnsignal1=2*gold121'-1;

N=10000;                             % 计算的仿真点数

data=ones(1,N);                       % 发送信息

signal1(m,:)=data(m).*npnsignal1(1:255);

gs1=[gs1 signal1(m,:)];

%这是中频频率

off1=fc+560;

%载波频偏560hz

%采样偏差100hz

carrierphase=pi/3;

t1=[1:length(gs1)*4-100]/samplefre;

carrier1=cos(2*pi*off1.*t1+carrierphase);

m=ceil(4.08e6/samplefre.*[1:length(carrier1)]);

gpnsignal1=gs1(m);

rs=gpnsignal1.*carrier1;

len=[1:510*2];

c=ceil(4.08/16.32.*len);

pnsignal1=npnsignal1(c);

py1=pnsignal1;

y1=fft(py1);

%---------------------公共参数  滤波器系数  锁相环参数  码跟踪环参数-----------------------------

b=fir1(250,0.52);                    % Lowpass filter of Costas loop(125点的延迟)

% dll环中环路滤波器设计

Bd=100;                              % 环路噪声带宽

damp=0.707;                          % 阻尼系数

td=1/16e3;                           % 相关积分时间

Kd=1;                                % 环路增益

Wd=2*Bd/(damp+1/(4*damp));           % 自然角频率

Cd1=8*damp*Wd*td/(Kd*(4+4*damp*Wd*td+(Wd*td)^2));  % 环路滤波器的系数

Cd2=4*(Wd*td)^2/(Kd*(4+4*damp*Wd*td+(Wd*td)^2));

% FLL环中环路滤波器设计

d=4*Bp*tp/(r+1);

G2=r*d*d/tp;

Wp=2*Bp/(damp+1/(4*damp));

Cp1=8*damp*Wp*tp/(Kp*(4+4*damp*Wp*tp+(Wp*tp)^2));

Cp2=4*(Wp*tp)^2/(Kp*(4+4*damp*Wp*tp+(Wp*tp)^2));

sequencestart=0;

rsi = awgn(rs,snr,'measured');

%叠加噪声

if ccn1>1

npnsignal2=[pnsignal1(1+1021-ccn1:1020) pnsignal1(1:1021-ccn1) pnsignal1(1+1021-ccn1:1020) pnsignal1(1:1021-ccn1) pnsignal1(1+1021-ccn1:1020) pnsignal1(1:1021-ccn1)];

npnsignal2=[pnsignal1 pnsignal1 pnsignal1];

%------------------------------------------------------tracking algorithm-----------------------------------------------------------------------

spll=zeros(1,N);

f=zeros(1,N);

phase=zeros(1,N);

dspll=zeros(1,N);

de=zeros(1,N);

dt=zeros(1,N);

datastart=zeros(1,N);

newstart=1021;

for n=1:N-len1

while newstart+m<=2040

timeoff=newstart:1:newstart+m-1;

c2 = ceil(timeoff);

newpnsignal11 = npnsignal2(c2);%相当于nco产生码片的速度就是抽样的速度,不断改变延时值来实现同步。

l(n)=length(newpnsignal11);

%----------调节相位---------------

%    rsif=rsi(1+datastart(n):m+datastart(n)).*cos(2*pi*(fnco)*[1+datastart(n):m+datastart(n)]/4.08//4+phase(n));

%    rsqf=rsi(1+datastart(n):m+datastart(n)).*sin(2*pi*(fnco)*[1+datastart(n):m+datastart(n)]/4.08//4+phase(n));

%----------调节频率---------------

rsif=rsi(1+datastart(n):m+datastart(n)).*cos(2*pi*(fnco+f(n))*[1:m]/4.08//4+phase(n));

rsqf=rsi(1+datastart(n):m+datastart(n)).*sin(2*pi*(fnco+f(n))*[1:m]/4.08//4+phase(n));

datastart(n+1)=m+datastart(n);

% rsif=filter(b,1,rsinew1);

% rsqf=filter(b,1,rsqnew1);

nresult1(n)=sum(rsif(1:m).*[newpnsignal11]);

nresultq1(n)=sum(rsqf(1:m).*[newpnsignal11]);

Q(n)=nresult1(n);

I(n)=nresultq1(n);

amp(n)=(nresult1(n)^2+nresultq1(n)^2);

nresultdelay1(n)=sum(rsif(1:m).*[newpnsignal11(2:m) newpnsignal11(1)]);%其实这个相当于超前的。

nresultqdelay1(n)=sum(rsqf(1:m).*[newpnsignal11(2:m) newpnsignal11(1)]);

nresultforward1(n)=sum(rsif(1:m).*[newpnsignal11(m) newpnsignal11(1:m-1)]);

nresultqforward1(n)=sum(rsqf(1:m).*[newpnsignal11(m) newpnsignal11(1:m-1)]);

%    e(n)=sign(nresult1(n))*nresultq1(n)/sqrt(nresult1(n)^2+nresultq1(n)^2);

de(n)=-(sqrt(nresultforward1(n)^2+nresultqforward1(n)^2)-sqrt(nresultdelay1(n)^2+nresultqdelay1(n)^2))/(sqrt(nresultforward1(n)^2+nresultqforward1(n)^2)+sqrt(nresultdelay1(n)^2+nresultqdelay1(n)^2));

%原来是延迟的减去提前的才对啊,否则相反了。现在是对的。

% % % ---------------------以下是用鉴频器的结果最终调节信号频率------------------------------------------

ec(n)=I(n-1)*Q(n)-I(n)*Q(n-1);

ep(n)=I(n)*I(n-1)+ Q(n)*Q(n-1);

e(n)=sign(ep(n))*ec(n)/sqrt(amp(n)*amp(n-1));%这是锁频环路的误差公式,用的CPAFC环来锁定载波

% % % 二阶锁频环 使用jpl滤波器 的参数

%  spll(n)=spll(n-1)+e(n)*16e3*G2;  % %无论噪声带宽怎么设置都无法跟踪上

%  f(n+1)=f(n)+G1*e(n)*16e3+spll(n);

% % % 二阶环的等效滤波器

spll(n)=spll(n-1)+e(n)*16e3*Cp2;   %

f(n+1)=f(n)+Cp1*e(n)*16e3+spll(n);

% % % 二阶锁频环 使用jafferichin滤波器 的参数

%  spll(n+1)=spll(n)+e(n)*16e3*Wp^2/16e3;

%  f(n+1)=f(n)+spll(n)/16e3+(1.414*Wp/16e3)*e(n)*16e3;

% % % 1阶锁频环 使用jafferichin滤波器 的参数

%   f(n+1)=f(n)+e(n)*16e3*4*Bp/16e3;

phase(n+1)=phase(n)+2*pi*(fnco+f(n))*(m)/4.08//4;

dspll(n)=dspll(n-1)+de(n)*Cd2;

dt(n)=Cd1*de(n)+dspll(n);

%delay(n+1)=delay(n)+dt(n)/2/pi/16000*16.32e6;%载波相位是累加的,码速是不用累加的

newstart=1020+newstart+m-2040+dt(n)/2/pi/16000*16.32e6;

%delay(n+1)=newstart+delay(n+1)+m-2040;

plot(nresultq1);

下堂课给出程序的仿真结果。

未完,待续!

医保报销

我自认为自己很聪明,但不知道为什么永远搞不清楚医保报销时的那种计算模式。只有每年的最后一次报销显得比较简单,能让我看得明白。记得第一次报销医保的时候,天哪,整个头都大了。各种减法再加各种乘法,直接懵圈。从没想过运算能让一个理工能变得束手无策,没办法只有贴出以前报销的模板,让自己不断的。能够熟悉这个流程。

只能说学无止境!

这个强迫症的治疗非常的漫长!

三个星期就要去医院开一次药!

大学教师有医保可以依靠,

真心感谢国家给我们的待遇!

修订记录

介绍使用matlab仿真工具和其各种类型的算法,讲解高校涉及matlab的相关课程,免费提供通信类、导航类的产品级物理层算法、数据统计分析算法、图像处理算法、AI算法。义务为各高校的MATLAB学习社团和生物医学领域的科研人员做技术支持。

值得您关注!

算法工匠

讲解高校电子及通信相关专业的课程,交流人文历史及教育心得,介绍和推广信号处理算法、通信算法和大数据算法。帮助学生了解信号处理和通信涉及的仿真知识并介绍算法在实际工作中的运用。提供matlab仿真程序供交流使用。大数据算法侧重生物医学领域,义务帮助医务人员进行数据统计分析。

如果你觉得我是努力教学的老师,愿意看我的文章,愿意和我分享您的经验和建议,请扫描公众号的二维码,关注我。

介绍和推广matlab仿真的文章及源代码,介绍和共享相关资料。为各高校和研究机构的MATLAB学习爱好者提供技术支持,义务为生物医学领域的科研人员做数据分析。