科斯塔斯环

clear
close all
clc

fs=1000;
signal_rate=40;
freq_error=1;
time_end=100;
EbN0=5;

t=0:1/fs:time_end;
t(end)=[];

signal=[ones(1,signal_rate*time_end/2);zeros(1,signal_rate*time_end/2)];
signal=reshape(signal,1,signal_rate*time_end);
signal=signal*2-1;
signal=repmat(signal,length(t)/length(signal),1);
signal=reshape(signal,1,length(t));
plot(t,signal);

signal_I=signal.*cos(2*pi*freq_error*t);
signal_Q=signal.*sin(2*pi*freq_error*t);
signal_I=awgn(signal_I,EbN0,'measured');
signal_Q=awgn(signal_Q,EbN0,'measured');
figure
plot(t,signal_I,t,signal_Q);

carrier_out=complex(zeros(size(t)),zeros(size(t)));
freq_out=zeros(size(t));
phase_out=zeros(size(t));
d_freq=0;
d_phase=0;

d_damping=sqrt(2)/2; % d_damping must less than 1
d_loop_bw=2*pi/200;  % d_loop_bw is between 2*pi/200 ~ 2*pi/100
denom=1+2*d_damping*d_loop_bw+d_loop_bw^2;
d_alpha=(4*d_damping*d_loop_bw)/denom;
d_beta=(4*d_loop_bw^2)/denom;

for n=1:length(t)
    freq_out(n)=d_freq;
    phase_out(n)=d_phase;
    carrier_out(n)=complex(signal_I(n),signal_Q(n))*exp(-1i*d_phase);
    error=real(carrier_out(n))*imag(carrier_out(n));
    error1=abs(error+1);
    error2=abs(error-1);
    error=(error1-error2)/2;
    d_freq=d_freq+d_beta*error;
    d_phase=d_phase+d_freq+d_alpha*error;
     if d_phase>2*pi, d_phase=d_phase-2*pi;
     elseif d_phase<-2*pi, d_phase=d_phase+2*pi;end
end

figure
plot(t,real(carrier_out),t,imag(carrier_out));
figure
plot(t,real(carrier_out));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值