GNSS信号捕获(1)

版权声明:欢迎转载 https://blog.csdn.net/LoseOfLock2/article/details/51960037

GNSS信号捕获(1)

摘要:一行matlab代码实现GNSS信号的捕获。


1. 结论

GNSS信号捕获的原理是扩频序列的自(互)相关性质,利用傅立叶变换可以快速计算两个序列的循环相关值,从而实现GNSS信号的捕获。

% input     - 输入中频序列
% repCode   - 本地码序列
% repCarr   - 本地载波序列
X = fft(repCode .* repCarr);    
X = [X(1), X(end:-1:2)];        % X(-k)
r = abs(ifft(fft(input) .* X);

或者:

r = abs(ifft(fft(input.*repCarr) .* conj(fft(repCode)));

2. 原理

上述代码利用了卷积定理:函数卷积的傅立叶变换是函数傅立叶变换的卷积。下面是简单的推导证明,循环相关公式如下:

r(m)=n=0N1x(n)y(n+m)(1.1)

两边做傅立叶变换(DFT):

R(k)=m=0N1n=0N1x(n)y(n+m)exp(j2πNmk)=n=0N1x(n)[m=0N1y(n+m)exp(j2πN(n+m)k)]exp(j2πNnk)=Y(k)n=0N1x(n)exp(j2πNnk)=Y(k)X(k)(1.2)

所以有:

r(n)=ifft[Y(k)X(k)](1.3)

特别的,当x(n)是实数序列时,X(k)=X(k),得:

r(n)=ifft[Y(k)X(k)](1.4)

3. 其他

在实际的捕获时,还要考虑载波的影响。当采用先载波剥离,后码剥离的捕获方式时,可采用公式(1.4)。而当采用载波和码同时剥离的捕获方式时,必须使用标准的公式(1.3)(原因在第2节),如下图所示:
捕获的两种方式

值得注意的是,当使用载波和码同时剥离的捕获方式时,如果使用公式(1.4)是得不到结果的,如下图:
matlab显示同时剥离

展开阅读全文

没有更多推荐了,返回首页