我是靠谱客的博主 紧张树叶,这篇文章主要介绍【粗频率校正/DPSK/matlab】Discrete-time PSK(离散相移键控)粗细频率校正原理讲解,以及使用matlab代码实现,现在分享给大家,希望可以做个参考。

当接收机中用于下变频的本振(LO)与发射机中的本振不同步时,通常会发生载波频率偏移。这主要是由于杂质,电气噪声和温差等自然效应。我们需要使用粗或者细频率校正去调整我们接收到的信号。

原理解析:

粗频率校正 Coarse Frequency correction

先来看这两张图:这两张图第一张为无offset的原始信号,第二张为100kHZ frequency offse。我们可以明显的感觉到这两个信号之间有100khz的offset,但是我们怎么用电脑把这100khz的误差读取出来有点困难,所以我们做一步简单处理,我们来看他们平方后的信号。

 

再来看这两张图第一张为无offset的原始信号,第二张为100kHZ frequency offse。这两张图都是平方倍处理后的信号,我们可以清楚的看到原始信号在0hz时有一个波峰,100khz frequency offset信号在图像上200khz的时候有一个波峰。 这是因为我们平方倍处理了信号,因此处理后的信号频谱页发生里位移。

 

所以,通过简单的处理我们接受的信号,我们可以很容易的找到他的frequency offset。下面具体来讲一讲这一部分在Discrete-time PSK(离散相移键控)的情况下使用matlab进行代码实现。

 

 第一个式子是在说我们要做我们收到的信号并把它平方倍,然后再做DTFT(discrete time Fourier transform)。第二个式子是在说我们要找到它在PSD中最高的那个y值所读应的x值,也就是我们的frequency offset。直接看matlab代码实现:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
%FFT fsample=sampleRateHz; L=length(offsetData); K=2^nextpow2(L);%1024 Y=fft(offsetData.^2,K); [M,I]=max(Y,[],1); %计算出frequency offset frequencyOffsetHz_accordingCalculation=fsample/2/K*I; freqShift = exp(1i.*2*pi*(-frequencyOffsetHz_accordingCalculation)*t.'); %根据我们所算出来的frequency offset,应用frequency offset correction到我们接受的offset data上 %使它能够变成我们原始的传输数据 originalData_acrossAWGN = offsetData.*freqShift; freqHistOrg=originalData_acrossAWGN.^2;

粗频率校正 Coarse Frequency correction 基本原理到这里就讲完了。

下面稍微讲讲他的局限性,对于粗频率校正我们主要是看收到信号的平方的傅里叶变换。因为我们平方处理了,所以frequency spectrum 跟着位移了两倍。就像我前面提到的100khz的frequency offset,在平方处理后的傅里叶变换里面就变成了200khz。举个简单的例子,依然是我们之前的原始信号,但是我给他设置600khz的frequency offset,那么我去看的DTFT,他的效果就跟100khz的frequency offset一样了。

所以,这种算法,能算的上限为F_sample/2如果你给你的接收到的信号做的是平方处理。F_sample/4,如果你做的是四次方处理,以此类推。F_sample为你采样频率,单位Hz。

 

所以,随着frequency offset变得较大时候,我们可能会无法使用这个方法来测量精准的偏差。这时候我们就要用的细频率校正Fine Frequency correction,下次讲。先放一个原理图:

 通过迭代的方法来计算frequency offset。

最后

以上就是紧张树叶最近收集整理的关于【粗频率校正/DPSK/matlab】Discrete-time PSK(离散相移键控)粗细频率校正原理讲解,以及使用matlab代码实现的全部内容,更多相关【粗频率校正/DPSK/matlab】Discrete-time内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(89)

评论列表共有 0 条评论

立即
投稿
返回
顶部