最近在优化频谱监测系统中的TDOA定位精度。TDOA中最重要的问题无外乎是信号时差的提取。看了国内外的文献,一致首推“广义相关(Generalized Cross Correlation--GCC)算法”。
查文献,在matlab中使用模拟正弦波仿真测试了一下广义相关算法,没有达到预期效果,百思不得其解。浏览了一下网络上关于GCC的评论,国内外不少人都抱怨无法得到预期仿真结果。最后,想到广义相关算法公式中,影响计算结果的主要参数是相位信息,应该需要使用仿真调制信号来测试。使用Matlab仿真FM/FSK/PSK之后,效果果然不错。在C++程序中实现这个算法只是工作量的问题了。matlab仿真源代码展示在这里,供大家参考。注意,不同版本Matlab需要使用不同的调制函数。运行结果下次再贴上。
%%%%%%广义互相关算法仿真 Generalized Cross Correlation %%%%%%%%%%%
%%%%%% 【信号仿真】 %%%%%%%%%%%
clear;
ModType = 'fm'; %%信号类型可选‘fm’和‘fsk’和‘psk’三种类型
deltaT = -100; %信号之间的数据点延迟--可正负
fftpoints=1024; %number of fft points
M = 2; freqsep = 4096; SamplesPerSymbol = 8; Fs = freqsep * M; %最恰当采样率应为M和频率步长乘积
InterpFactor = 4; SymbolRate =