如何使用滤波器去除信号中的颠簸?
信息处理
matlab
过滤器
过滤器设计
低通滤波器
数字滤波器
2022-02-24 00:48:37
1个回答
像这样的隆起很可能是宽带的,尤其是在急剧发作的情况下。另外,这条线在傅里叶域中可能很难处理。因此,用经典的线性滤波器去除组合是复杂的。这个问题非常类似于基线、背景或趋势移除,在此处的其他地方进行了回答。
有几个选项是可能的,例如:
- 使用基于中值或最小/最大统计的非线性滤波器,
- 使用形态算子:一个滚动的球,很多直线段等。
- 使用有关数据模型的知识,例如线性方程:,或者凸起在“上方”的事实,
- 使用适当的数据保真度和惩罚将上述内容组合成一个变分公式。
在您的示例中,我怀疑具有稳健距离(如最小绝对失真)的经典线性拟合可以完成这项工作。我将调用所有上述过滤器,从广义上讲,您将根据其他某种组合替换一个值。
您也可以将以下稳健回归称为 LAD 拟合。工作中的一个例子:
% Standard and Robust fit of a degree 1 polynomial w/ a bump
nSample = 1000;
% Create a similar composite signal
time = linspace(0,5,nSample)';
polyCoef = [0.2 0];
dataLine = polyval(polyCoef,time);
dataParabola = -8*(time-2).*(time-3);
dataParabola(dataParabola < 0) = 0;
data = dataLine+dataParabola;
% Use Matlab curve fitting toolbox
optsRobust = fitoptions('Method','LinearLeastSquares','Robust','LAR');
[fitObject,gof] = fit(time,data,'poly1',optsRobust);
h1=plot(fitObject,time,data);
grid on
其它你可能感兴趣的问题

