【问题标题】:Regression or correlation of time-shifed and time-scaled signals时移和时标信号的回归或相关
【发布时间】:2019-04-21 23:15:38
【问题描述】:

我有 2 个数字伪随机信号。第二个信号是第一个信号的副本,但它在时间上发生了偏移,并且按时间缩放,并且添加了随机噪声。 用数学语言:s1=f(t)s2=f(a*t+c) + noise

我在任意时间t 开始对这对信号进行采样,因此该时间与伪随机序列的“开始”之间的关系是未知的。

a=1 时,我可以使用互相关技术来找到c,但a!=1 会引发问题。

在给定这两个信号的情况下,找到ac 的最佳方法是什么? 现在我正在暴力破解ac 的许多组合,并且在现代计算机上需要几个小时才能找到它们。

我不是在寻找一个现成的代码来解决这个问题。只是一个很好的通用算法。

附言
我可以很好地阅读C和C++

【问题讨论】:

    标签: algorithm signal-processing


    【解决方案1】:

    关于您的信号的信息不多(例如,两个信号的长度是否相等,您的时移是否循环,或者您在进行时移时使用零填充...)。但我可以给出一般性建议.您可以尝试使用一些最小化或拟合数据包/库。我成功地使用了MPFIT: A MINPACK-1 Least Squares Fitting Library in C 来完成与您类似的任务。

    您的任务有 2 个参数 - a 和 c。您的 s2 数据集是 MPFIT 中的“观察到的数据点”。 f(a*t+c) - 是模特。 MPFIT 找到最好的 a 和 c,它们最小化了 s2 和 f(a*t+c) 之间的最小二乘差。此方法的缺点之一是您必须为 a 和 b 设置初始值,但通常已知良好的初始近似值。

    【讨论】:

    • 当时间缩放因子a!=1时,这些信号的长度不能相等。这些信号的“开始”也是未知的——换句话说,我在任意时间t 之后开始采样,与信号开始的关系未知。时移c 不是循环的,因为s1 是一个很长的伪随机序列,以至于它对于所有意图和目的都不是循环的。然而ac 在整个信号中是恒定的。当我暴力破解解决方案时,在进行a*t+c 线性变换之后,我会忽略重叠区域之外的信号。
    • 在暴力破解期间,我已经在使用 s1 和 s2 脉冲之间的时间差的least sum of squares判断转换后的拟合有多接近。
    • @GeorgeRobinson。最小化/拟合数据包可以比蛮力更快地找到“最小平方和”的最小值。尝试使用 MPFIT(或其他数据包)。这不是很困难,因为您已经完成了一半的工作 - 计算 s1 和 s2 之间差异的代码。
    猜你喜欢
    • 2017-05-20
    • 2017-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-19
    • 2019-04-17
    • 2019-04-03
    • 1970-01-01
    相关资源
    最近更新 更多