八度中的鲁棒最小二乘法

时间:2017-08-15 09:29:37

标签: signal-processing octave mathematical-optimization least-squares

我使用Octave编程classical Prony's method(或有时是Prony的分析)。该脚本在测试信号上工作得很好,例如:

t = 1:600;
sig = exp(-0.01*t).*cos(0.1*t);

但即使添加少量噪音也会完全崩溃:

sig = sig + 0.001*rand(size(sig));

当线性预测为bulit时,问题是使用pinv计算超定方程组(参见上面的链接)。我需要一些更强大,更不敏感的异常值。可悲的是,到目前为止,Octave核心中的任何功能都没有帮助我。我尝试了olslscov,但他们没有做到这一点。

请提供任何提示?

注意:我知道经典的Prony是非常有问题的,因为这个问题并且有修改的算法(例如this one)。我觉得我还没有完成经典方法的最大工作。使用更好的解算器,它应该持续存在这种噪音。

1 个答案:

答案 0 :(得分:0)

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