时延估计器的蒙特卡洛仿真分析

article/2025/4/22 1:32:53

摘要

针对时延未知的带噪信号,使用广义相关算法计算时延估计。为提高估计精度,采用蒙特卡洛方法估计时延值。首先模拟建立两个带噪且互不相关的接收信号,通过广义相关算法多次实验计算时延,接着利用蒙特卡洛方法对多次实验计算得出的时延求均值,从而利用均值估计出时延。仿真实验表明,当信噪比为6 dB时,本实验采用的方法误差为 2.27%。

Abstract

A generalized cross-correlation time delay estimation algorithm is proposed to calculate the time delay between two signals with noise and unknown delay. The Monte Carlo method is used to improve the estimation accuracy. Two irrelevant signals with noise are constructed in the simulation. Then make a few times of experiments using the generalized cross-correlation algorithm to get the delay in every experiment, and use the Monte Carlo method to calculate the mean which represents the time delay. Simulation results show that the relative error is 2.27% when the signal-to-noise ratio is 6 dB.

 

一、引言

时延估计是信号处理领域较为重要的问题,其在雷达[1]、声纳[2]、无线电通信[3]等领域得到广泛的应用。

经典的时延估计算法有基本相关法、广义相关算法[4]、子空间估计算法[5]和自适应算法[6]等。在高信噪比和高采样率的条件下,相关算法可以得到精确的时延估计。但其需要估计信号功率谱,只能估计采样间隔整数倍时延,且需峰值检测。子空间类算法可实现多径时延估计,但该算法需要矩阵运算,计算量大且需要峰值检测。自适应估计法需在采样间隔整数倍时延估计出后利用该算法估计出小数部分,进而提高估计精度。近年来,针对不同的应用环境,很多算法被应用于时延估计。

同时,新的信号处理算法也用于时延估计中。蒙特卡洛方法是一类非常重要的数值计算方法,它以概率统计理论为指导,使用随机数或伪随机数,采用统计抽样理论近似求解问题。其主要理论基础是概率论中的大数定律[7],其主要手段是随机变量的抽样[8]。文献[9]和文献[10]利用重要性采样(IS)的方法实现了参考信号已知条件下的非多径和多径的时延估计,进而将蒙特卡洛算法的思想应用到了时延估计中。这类算法的思想是利用蒙特卡洛(MC)方法对未知参数的分布函数抽样,计算样本均值直接得到参数估计结果,具有很好的实践意义[11]。

本文使用广义相关算法,配合蒙特卡洛方法,计算两模拟接收信号的延迟估计值,并与实际延迟进行对比,分析了该方法的误差和优缺点。

二、问题描述

时延估计所要解决的基本问题为:准确、迅速地估计和测定接收器或接收阵列接收到的同源信号之间的时间延迟。由于在接收现场可能存在各种噪声和干扰,接收到的目标信号往往淹没于噪声和干扰之中。因此,对带噪信号进行时延估计要排除噪声和干扰的影响,提高接收信号的信噪比。

三、处理方法

(一)原理

1. 基本时延估计方法

相关法是最经典的时延估计方法,它通过信号的自相关函数滞后的峰值估计信号之间延迟的时间差[12]。其基本思想是利用两信号x_1 (t)x_2 (t)的相关函数来估计时间延迟。假设两接收信号为:

x_1 (t)=s(t)+n_1 (t)

x_2 (t)=s(t-D)+n_2 (t)

x_1(t)x_2(t)是两个相互独立的接收信号,n_1(t)n_2(t)为加性噪声,D为时间延迟。假定噪声均为零均值,方差等于 1 的正态平稳随机过程,且噪声之间以及信号与噪声之间相互独立,则信号的相关函数为:

R_{12} (τ)=E[x_1 (t) x_2 (t+τ)]=R_{ss} (τ-D)+R_{sn_1} (τ-D)+R_{sn_2} (τ)+R_{n_1 n_2} (τ)

式中,假设s(t)n_1(t)n_2(t)三者相互独立,则有:

R_{sn_1} (\tau-D)=0

R_{sn_2} (τ)=0

R_{n_1 n_2} (τ)=0

即源信号与噪声之间及噪声与噪声之间完全正交,由自相关函数R_ss的性质:

\left \vert R_{ss} (\tau-D)\right \vert < R_{ss} (0)

 可知,当\tau-D=0时,R_ss达到最大值,即两个接收信号的相关性最大。因此选择R_ss (\tau-D)取得最大值的\tau值作为时延值。相关时延估计算法计算简单、直观,但由于互相关函数受信号的谱性和噪声的影响,此方法不能兼顾时延估计值的分辨率和稳定性。

(二)广义相位谱法

广义相位谱法师基于相位谱估计的时延户籍方法中最常见的一种算法。由维纳-辛钦定理可知,信号的相关函数与其功率谱是互为傅里叶变换的。因此,信号之间的相似性既可以由相关函数在时间域比较也可以由功率谱密度函数在频率域来比较。文献[13]通过计算两个信号的互功率谱估计信号时延,采用相位数据回归法对相位数据进行处理,可以使互谱时延估计的处理结果接近甚至等效于最大似然估计器。对式R_(x_1 x_2 ) (τ)=R_ss (τ-D)两边取傅里叶变换,有:

G_{x_1 x_2} (f)=G_{ss} (f) e^{(-j2πjd)}=G_{ss} (f)e^{(jθ(f))}

推导可得到:

θ(f)=\arctan{\frac{Im[G_{x_1 x_2} (f)]}{Re[G_{x_1 x_2} (f)]}}=-2πfd

θ(f)表示功率谱G_{x_1 x_2} (f)的相位函数,因此时间延迟估计d ̂可以表示成:d ̂=-\frac{θ ̂(f)}{2πf}θ ̂(f)表示相位函数θ(f)的估计值。

2. 蒙特卡洛方法

由于加入了噪声,所以在每次实验中计算得到的延时d与延时实际值D之间存在误差,可采用最小二乘法来求取时间延迟估计d ̂,但本实验采用蒙特卡洛方法,通过多次随机实验求统计平均的方法代替最小二乘法得到时延估计,在每一次实验中,延时d 表示为:d=-\frac{max[θ(f)]}{2πf},而时间延迟估计d ̂表示为:

 d ̂=\frac{1}{M}\sum_{m^(M-1)}^{d(m)}

d(m)表示第m次实验求得的延时,M表示随机实验的次数。随机实验得到的d(m)方差越小,实验次数M越大,最终求出的时间延迟估计d ̂越接近延时实际值D[14]。

(二)算法步骤

  1. 模拟两个接收信号x_1 (t)x_2 (t)并求得其互功率谱G_{x_1 x_2} (f)
  2. 通过公式d=-\frac{max[θ(f)]}{2πf}求得当前实验的延时d(m)
  3. 重复实验M次,通过公式d ̂=\frac{1}{M} \sum_{m^(M-1)}^{d(m)}求得时间延迟估计值d ̂

四、分析

在实验中为方便可视化,使用相位延时,假设延时D=π⁄4且接收信号为:

x_1 (t)=sin⁡[(2πft)]+n_1 (t)

x_2 (t)=sin⁡[(2πft-D)]+n_2 (t)

 

标题图 4. 1 模拟的两个接收信号 x_1(t) 和 x_2(t)

进行了 100 次随机实验,求得的延迟估计值d ̂=45.0130,在加入了加性噪声的情况下,信噪比为6 dB,误差为 2.27%。当信噪比降低到5dB,误差为 8.99%,且随机实验中多次出现取max⁡[θ(f)]计算当次实验的延时,结果等于0的情况。当信噪比低于5 dB,实验结果多为不可用。

标题图 4. 2 信噪比为 6 dB 时的实验结果

 

标题图 4. 3 信噪比为 5 dB 时的实验结果

 

五、结论

本文使用广义相关算法计算两个带噪信号的时延,并利用蒙特卡洛方法对多次实验计算得出的时延求均值,从而利用均值估计出时延。本文使用的方法优点是简单、计算复杂度低,在信噪比大于等于5 dB的情况下,误差能控制在较低水平。缺点是没使用滤波器,依赖极值,在信噪比低的情况下结果受噪声扰动大。

六、参考文献

[1] R. Hai-Peng, L. Wen-Chao, and L. Ding, “Hopf bifurcation analysis of Chen circuit with direct time delay feedback,” Chin. Phys. B, vol. 19, no. 3, p. 030511, Mar. 2010, doi: 10.1088/1674-1056/19/3/030511.

[2] G. Carter, “Time delay estimation for passive sonar signal processing,” IEEE Trans. Acoust. Speech Signal Process., vol. 29, no. 3, pp. 463–470, Jun. 1981, doi: 10.1109/TASSP.1981.1163560.

[3] B.-W. Luo, J.-J. Dong, Y. Yu, T. Yang, and X.-L. Zhang, “Photonic multi-shape UWB pulse generation using a semiconductor optical amplifier-based nonlinear optical loop mirror,” Chin. Phys. B, vol. 22, no. 2, p. 023201, Feb. 2013, doi: 10.1088/1674-1056/22/2/023201.

[4] C. Knapp and G. Carter, “The generalized correlation method for estimation of time delay,” IEEE Trans. Acoust. Speech Signal Process., vol. 24, no. 4, pp. 320–327, Aug. 1976, doi: 10.1109/TASSP.1976.1162830.

[5] A. K. Nandi, “On the subsample time delay estimation of narrowband ultrasonic echoes,” IEEE Trans. Ultrason. Ferroelectr. Freq. Control, vol. 42, no. 6, pp. 993–1001, 1995, doi: 10.1109/58.476542.

[6] Z. Cheng and T. T. Tjhung, “A new time delay estimator based on ETDE,” IEEE Trans. Signal Process., vol. 51, no. 7, pp. 1859–1869, Jul. 2003, doi: 10.1109/TSP.2003.812735.

[7] D.-H. Duan, W. Xu, J. Su, and B.-C. Zhou, “The Stochastic stability of a Logistic model with Poisson white noise,” Chin. Phys. B, vol. 20, no. 3, p. 030501, Mar. 2011, doi: 10.1088/1674-1056/20/3/030501.

[8] X.-C. Zhang and C.-J. Guo, “Cubature Kalman filters: Derivation and extension,” Chin. Phys. B, vol. 22, no. 12, p. 128401, Dec. 2013, doi: 10.1088/1674-1056/22/12/128401.

[9] A. Masmoudi, F. Bellili, S. Affes, and A. Stephenne, “A Non-Data-Aided Maximum Likelihood Time Delay Estimator Using Importance Sampling,” IEEE Trans. Signal Process., vol. 59, no. 10, pp. 4505–4515, Oct. 2011, doi: 10.1109/TSP.2011.2161293.

[10]  A. Masmoudi, F. Bellili, S. Affes, and A. Stephenne, “A Maximum Likelihood Time Delay Estimator in a Multipath Environment Using Importance Sampling,” IEEE Trans. Signal Process., vol. 61, no. 1, pp. 182–193, Jan. 2013, doi: 10.1109/TSP.2012.2222402.

[11]   李晶, 赵拥军, and 李冬海, “基于马尔科夫链蒙特卡罗的时延估计算法*,” Acta Physica Sinica, no. 13 %V. pp. 130701-1-130701–7, 2014.

[12]   行鸿彦 and 唐娟, “时延估计方法的分析,” Tech. Acoust., vol. 27, no. 1, pp. 110–114, 2008.

[13]   A. Piersol, “Time delay estimation using phase data,” IEEE Trans. Acoust. Speech Signal Process., vol. 29, no. 3, pp. 471–477, Jun. 1981, doi: 10.1109/TASSP.1981.1163555.

[14]   巴斌, 郑娜娥, 朱世磊, and 胡捍英, “利用蒙特卡罗的最大似然时延估计算法,” Journal of Xi’an Jiaotong University, vol. 49, no. 8. pp. 24–30, 2015.

七、附录

fs = 1024;
D = pi / 4;
f = 20;
t = 0:1 / fs:1023 / fs;
M = 100;
noise_scale = 1.375;
delay = zeros(1, M);
mean_delay = ones(1, M);
for m = 1:Ms1 = sin(2*pi*f*t);n1 = noise_scale .* rand(fs, 1)';s2 = sin(2*pi*f*t-D);n2 = noise_scale .* rand(fs, 1)';x1 = s1 + n1;x2 = s2 + n2;X1 = fft(x1, 1024);X2 = fft(x2, 1024);subplot(2, 2, 1), plot(x1);title("x1(t)");subplot(2, 2, 3), plot(abs(X1), 'r');title("The spectrum of x1(t)");subplot(2, 2, 2), plot(x2);title("x2(t)");subplot(2, 2, 4), plot(abs(X2), 'g');title("The spectrum of x2(t)");% estimates the cross power spectral density (CPSD) of two discrete-time signalscpsd_x1_x2 = cpsd(x1, x2);d = abs(atan(imag(max(cpsd_x1_x2))/real(max(cpsd_x1_x2))));d = d * 180 / pi;delay(m) = d;
end
mean_delay = mean_delay * mean(delay);
error = abs(D*(180 / pi)-mean(delay));
relative_error = error / (D * (180 / pi));
Px2 = sum(x2.^2) / size(x2, 2);
Pn2 = sum(n2.^2) / size(n2, 2);
snr = 10 * log(Px2/Pn2);
figure
plot(delay, '*');
hold on
plot(mean_delay, 'r');
title("The calculated delay");
xlabel("m");
ylabel("degree");
legend("delay(m)", "mean delay");


http://chatgpt.dhexx.cn/article/p916G2Y1.shtml

相关文章

蒙特卡洛仿真的基于Python实例

文章原作者&#xff1a;新缸中之脑文章链接&#xff1a;https://www.toutiao.com/i7028498316396839432/?tt_fromweixin&utm_campaignclient_share&wxshare_count1&timestamp1638613017&appnews_article&utm_sourceweixin&utm_mediumtoutiao_ios&…

检测性能的蒙特卡洛仿真-检测部分

一、 实验目的 使用matlab编程&#xff0c;利用蒙特卡洛方法&#xff0c;对一个简单的二元假设检验问题进行仿真&#xff0c;分析不同信噪比下检测器的性能。 二、 实验步骤 通过蒙特卡洛仿真实验&#xff0c;检测性能在不同信噪比下的表现&#xff0c;以验证信噪比对于检测…

5G仿真-蒙特卡洛仿真方法

5G仿真-蒙特卡洛仿真方法 #蒙特卡洛仿真法 蒙特卡洛方法也称为统计试验方法&#xff0c;它是采用统计的抽样理论来近似求解数学问题或物 理问题&#xff0c;它即可以求解概率问题&#xff0c;也可以求解非概率问题&#xff0c;蒙特卡洛方法是系统模拟的重要方法。下面举例说明…

talemu---蒙特卡洛仿真软件产品介绍

一 简介 talemu是拥有独立知识产权的国产软件&#xff0c;核心功能是进行蒙特卡洛仿真。通过应用多项自研成果&#xff0c;能够对主流开发语言编写的模型自动创建蒙特卡洛仿真模型&#xff0c;还能够对依赖特定软硬件环境的模型创建仿真模型。依据模型自动生成仿真数据并完成蒙…

蒙特卡罗仿真(1):入门求生指南(Python实例)

目录 1. 前言 1.1 两个要点 1.2 Simulation pros and con’s[2] 2. 随机数生成 3. 几个简单的应用 3.1 抛硬币实验 3.2 扔骰子实验 3.3 用蒙特卡罗仿真求pi值 3.4 估计定积分的值​​​​​​​ 4. 小结 1. 前言 仿真&#xff08;Simulation&#xff09;&#xff1a;…

武器系统仿真技术(二):末端制导系统蒙特卡洛仿真法

1.蒙特卡洛仿真方法的统计特性 假设一个 m m m个系统输出数据 { y i } i 1 m \{y_i\}_{i1}^m {yi​}i1m​&#xff0c; N N N次循环得到 N N N组数据 { { y i } i 1 m } j 1 N \{\{y_i\}_{i1}^m\}_{j1}^N {{yi​}i1m​}j1N​。那么实际上会有以下两组统计特性指标: 1.2数值…

检测性能的蒙特卡洛仿真-估计部分

一、 实验目的 使用matlab编程&#xff0c;利用蒙特卡洛方法&#xff0c;对一个简单的二元假设检验问题进行仿真&#xff0c;分析不同信噪比下检测器的性能&#xff0c;分析SNR、MSE对估计的影响。 二、 实验步骤 通过蒙特卡洛仿真实验&#xff0c;检测性能在不同信噪比下的…

cadence的工艺角仿真、蒙特卡洛仿真、PSRR

cadence的工艺角仿真、蒙特卡洛仿真、PSRR 工艺角仿真打开ADE XL选择工艺角为ff设置工艺角 蒙特卡洛仿真PSRR温度扫描 学习来源&#xff1a;https://www.bilibili.com/video/BV1gX4y1g7JJ?spm_id_from333.337.search-card.all.click 工艺角仿真 打开ADE XL 当你在ADEL完成仿…

雅可比迭代法法

雅可比迭代法法 在图形图像中很多地方用到求矩阵的特征值和特征向量&#xff0c;比如主成分分析、OBB包围盒等。编程时一般都是用数值分析的方法来计算&#xff0c;这里介绍一下雅可比迭代法求解特征值和特征向量。雅可比迭代法的原理&#xff0c;网上资料很多&#xff0c;详细…

雅可比迭代法和高斯赛德尔迭代法

刚学 Jacobi算法和Gauss_Siedel算法不久&#xff0c;觉的对以后学习会有帮助&#xff0c;所以记下来&#xff0c;希望感兴趣的朋友共勉&#xff01; 雅克比迭代 #include < iostream > #include " math.h " using namespace std; #define n 3 double a[n][n] …

数值计算——雅可比迭代法解线性方程组

1.雅克比迭代法的计算过程: (1).取初始向量: &#xff08;1&#xff09; (2).迭代过程 &#xff08;2&#xff09; 2.求解实例&#xff1a; &#xff08;3&#xff09; 用 Jacobi 方法求解&#xff0c;精确到小数点后 6 位, 给出所需步数及残差; 3.求解结果&#xff1a; 当n1…

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现 一、雅可比迭代法 程序代码&#xff1a; function y Jacobi(A,b,e,M) % input: A 的对角线元素均不为 0 e: 精度 M: 最大计算次数 % output: y: 方程的解n length(A); x0 zeros(n,1); y zeros(n,1);[l,w] si…

数值计算——雅可比迭代法解线性方程组(附代码)

1.雅克比迭代法的计算过程: (1).取初始向量: &#xff08;1&#xff09; (2).迭代过程 &#xff08;2&#xff09; 2.求解实例&#xff1a; &#xff08;3&#xff09; 用 Jacobi 方法求解&#xff0c;精确到小数点后 6 位, 给出所需步数及残差; 3.求解结果&#xff1a; 当n1…

雅可比迭代法程序c语言,求雅可比迭代法解方程组的C\C++程序

满意答案 singleycf 2013.07.05 采纳率&#xff1a;54% 等级&#xff1a;13 已帮助&#xff1a;7908人 #include #include Jacobidiedai(int n, double *a, double *b,double *x) { int i,j; double *x0,m0,eps; x0 (double *) malloc(n*sizeof(double)); for(i0;i x0[i]x…

雅可比迭代法解线性方程组。

L U分解在我之前写的文章里。 定义的变量有点多&#xff0c;但挺容易看的。 #include<stdio.h> #include<math.h> #define N 3 int main (void) {double A[N][N] {0};double D[N][N] {0};double L[N][N] {0};double U[N][N] {0};double C[N][N] {0};double…

线性方程组迭代法—雅克比迭代法C++

此例子使用三个变量、三个方程的情况&#xff0c;如需讨论多个的情况&#xff0c;使用vector稍加修改即可。 使用的方程组如下&#xff1a; 每次迭代的值如下&#xff1a; 程序流程图&#xff1a; 程序代码&#xff1a; /********雅克比迭代法********* *1.Xi为每一步迭代…

《数值分析》-- 雅可比迭代法、高斯—塞德尔迭代法

文章目录 一、基本迭代法的格式及收敛性1.1 迭代法思想1.2 向量序列收敛的定义 二、迭代法的收敛与发散三、雅可比迭代法和高斯赛德尔迭代法3.1 雅可比迭代法3.2 高斯――赛得尔(Gauss-Seidel)迭代法 四、迭代法的收敛性4.1 严格对角占优矩阵与对角占优矩阵4.2 Jacobi迭代法和G…

雅克比迭代法,高斯赛德尔迭代法,sor迭代法(python)

计算方法实验&#xff0c;在已给matlab的程序基础上进行修改得到的python程序&#xff0c;原理不再赘述。实际使用时&#xff0c;只需修改以下程序中的A,b矩阵&#xff08;注意只适用与A为n*n的情况&#xff09; 1.雅克比迭代法 import numpy as npA np.array([[10,-1,-2],[…

C语言实现雅克比迭代法求根

C语言实现雅克比迭代法求根 雅克比迭代法求根 C语言实现雅克比迭代法求根问题描述算法思想C语言程序实验结果 问题描述 设方程组 A x b Ax b Axb的系数矩阵 A A A非奇异 &#xff0c;且 a i i ≠ 0 {a_{ii}} \ne 0 aii​​0将 A A A分裂为&#xff1a; A D L U A D L…

雅克比迭代法和高斯-塞德尔迭代法

https://wenku.baidu.com/view/ac6a0d89d0d233d4b04e6905.html 另外附上迭代收敛的条件&#xff1a; 且越小&#xff0c;收敛的越快。