babyeric
Junior Member level 1
frequency offset estimation matlab
Hi,
Currently, I am doing Baseband frequency offset estimation in matlab. However I had encounted a major problem. At low SNR, my algorithm could not estimate the offset. Anyone can tell me which steps I had missed out in my code? Hope the experts out there can help. This is my matlab code:
Ain=sign(randn(1,1024)); %generate +/- 1
Aupsample=upsample(Ain,4);
rrcfilter=rcosine(1,4,'fir/sqrt',0.3,4); %A rrc filter generate by matlab
Arrc=conv(Ain,rrcfilter); % filter the signal
foff=0.005; %normalise frequency offset
t=1:length(Arrc);
Aoffset=Arrc.*exp(j*foff*t); %frequency offset the signal
Anoisy=awgn(Aoffset,0,'measured'); %add noise
Brrc=conv(Anoisy,rrcfilter); %matched filter the received signal
Bdownsample=downsample(Arrc,4); %downsample the signal
Bframe=Bdownsample(9:end-8 ); %locate start of frame
Bm=Bframe.*conj(Ain); %remove modulation
Bconj=Bm(2:end).*Bm(1:end-1); %frequency offset algorithm
foffest=sum(angle(Bconj)); %estimate frequency offset
This is my simple matlab code. Hope you all can help and tell me why I can't get the frequency offset which I set it at 0.005? When the SNR is high ie: 20 or 30dB, I can frequency offset easily.
Really need your help urgently. Thank you.
Hi,
Currently, I am doing Baseband frequency offset estimation in matlab. However I had encounted a major problem. At low SNR, my algorithm could not estimate the offset. Anyone can tell me which steps I had missed out in my code? Hope the experts out there can help. This is my matlab code:
Ain=sign(randn(1,1024)); %generate +/- 1
Aupsample=upsample(Ain,4);
rrcfilter=rcosine(1,4,'fir/sqrt',0.3,4); %A rrc filter generate by matlab
Arrc=conv(Ain,rrcfilter); % filter the signal
foff=0.005; %normalise frequency offset
t=1:length(Arrc);
Aoffset=Arrc.*exp(j*foff*t); %frequency offset the signal
Anoisy=awgn(Aoffset,0,'measured'); %add noise
Brrc=conv(Anoisy,rrcfilter); %matched filter the received signal
Bdownsample=downsample(Arrc,4); %downsample the signal
Bframe=Bdownsample(9:end-8 ); %locate start of frame
Bm=Bframe.*conj(Ain); %remove modulation
Bconj=Bm(2:end).*Bm(1:end-1); %frequency offset algorithm
foffest=sum(angle(Bconj)); %estimate frequency offset
This is my simple matlab code. Hope you all can help and tell me why I can't get the frequency offset which I set it at 0.005? When the SNR is high ie: 20 or 30dB, I can frequency offset easily.
Really need your help urgently. Thank you.