📄 pingchaguji.asv
字号:
%仿真一种全数字化载波频偏估计器%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all;
clear all;
clc;
%**********产生信源(16QAM随即信源)*************************%
%**********画频谱和星座图,加噪声****************************%
Kbase=2;
fs=100;
fb=2;
fc=10;
x=randint(1,1000);
%y=qam(x,Kbase,fs,fb,fc);
T=length(x)/fb; m=fs/fb; nn=length(x);
dt=1/fs; t=0:dt:T-dt;
Kbase=rem(Kbase,2); Kbase=Kbase+(Kbase==0)*2;
I=x(1:2:nn-1); [I,In]=two2four(I,4*m);
Q=x(2:2:nn); [Q,Qn]=two2four(Q,4*m);
I=bshape(I,fs,fb/4); Q=bshape(Q,fs,fb/4);
y=I.*cos(2*pi*fc*t)-Q.*sin(2*pi*fc*t);
figure(1);
plot(y);
figure(2);
constel(y,fs,fb,fc); xlabel('Constellation');
%********观测有噪声的星座图**********************************%
snr_in_db=10;
snr=10^((snr_in_db)/10);
r=rand(1,50*1000);
w=sqrt(mean(x.^2)/snr)*sqrt(-log(r)/2).*cos(2*pi*r);
z=y+w;
figure(3);
constel(z,fs,fb,fc); xlabel('Constellation');
figure(4);
plot(t,z);
%***********************************************************%
n=length(y);
m=fs/fb;
y1=fft(y)/n;
y2=abs(y1(1:fix(n/2)))*2;
p=find(y2<1e-04);
y2(p)=1e-04;
y3=20*log10(y2);
f1=m/n;
f=0:f1:(length(y3)-1)*f1;
figure(5);
plot(f,y3,'r'); grid on;
title('spectrum'); xlabel('f/fb'); zoom xon;
%******************下面是产生QAM信号的另外一种方法************%
%x=modulator(1,16,10,9,0.01,50,160);
%x=modulator(rb,fc,snr_in_db,k,df,N,L);
%rb 码率;fc 载频; df 频偏;
%N 码元个数,L 每个码字采样数
%k 调制类型 123 2ASK,BPSK,2FSK 456 4ASK,QPSK,4FSK
%78 8PSK,8FSK 9 16QAM
%***********************************************************%
disp('I,Q的方差和均值为:');
E_I=mean(I)
I_var=var(I)
E_Q=mean(Q)
Q_var=var(Q)
%******************频偏估计算法*****************************%
delta_w=0.02;
a=I.*cos(delta_w*t)-Q.*sin(delta_w*t);
b=I.*sin(delta_w*t)-Q.*cos(delta_w*t);%低通滤波后的信号
I_delay=zeros(1,50000);
I_delay(2:50000)=I(1:49999);
Q_delay=zeros(1,50000);
Q_delay(2:50000)=Q(1:49999);
Y=I_delay.*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -