Signal processing 八度稳健最小二乘法

Signal processing 八度稳健最小二乘法,signal-processing,octave,mathematical-optimization,least-squares,Signal Processing,Octave,Mathematical Optimization,Least Squares,我正在用倍频程编程(有时是Prony的分析)。脚本在测试信号上工作得非常好,例如: t = 1:600; sig = exp(-0.01*t).*cos(0.1*t); 但即使添加少量噪音,也会完全崩溃: sig = sig + 0.001*rand(size(sig)); 当线性预测建立时,问题是使用pinv计算超定方程组(参见上面的链接)。我需要一些更健壮、对异常值不太敏感的东西。可悲的是,到目前为止,八度音阶的核心没有任何功能对我有所帮助。我尝试了ols和lscov,但他们没有成功 有

我正在用倍频程编程(有时是Prony的分析)。脚本在测试信号上工作得非常好,例如:

t = 1:600;
sig = exp(-0.01*t).*cos(0.1*t);
但即使添加少量噪音,也会完全崩溃:

sig = sig + 0.001*rand(size(sig));
当线性预测建立时,问题是使用
pinv
计算超定方程组(参见上面的链接)。我需要一些更健壮、对异常值不太敏感的东西。可悲的是,到目前为止,八度音阶的核心没有任何功能对我有所帮助。我尝试了
ols
lscov
,但他们没有成功

有什么提示吗


注意:我知道经典的Prony是非常有问题的,正是因为这个问题,还有一些修改过的算法(例如)。我只是觉得我没有尽最大努力让经典方法发挥作用。使用更好的解算器,它应该能够保持这种噪声。

我认为这里的问题是噪声和潜在阻尼正弦之间的时间尺度差异。可以匹配阻尼正弦曲线的差分方程的最低阶是二阶,因此只跨越三个相邻的时间步。但是这样的模型很可能会过度拟合噪声信号,因为正弦信号的周期是几十个样本。如果噪声足够弱,您可以使用Prony方法,通过对角加载和/或增加模型的阶数来正则化伪逆,从而使预测滤波器跨越更大的时间范围。

将Prony方法(或其简明版本)的实现包括在内,将大大改善此问题