Matlab 滤波器加速数据中的电尖峰

标签 matlab filter noise

我有一个受电尖峰影响的加速数据集。

我正在寻找一种好的方法来过滤或减少这些尖峰,因为需要根据这些数据计算 FFT 的滚动窗口和其他统计指标(例如峰度和偏度)。我不能简单地删除这些异常值或用 NaN 替换它们。 采样2000[hz]

到目前为止,我已经尝试过 MATLAB 2012b:

  • 小波去噪(Haar 小波)
  • 中值滤波器
  • 尖峰和迭代方法

您能建议一种处理这些数据的正确方法吗?

Download example dataset

最佳答案

我建议进行一些局部平滑。通过定义阈值并对低于和高于的所有值求平均值。

Af = data.example1;
% Thresholds
Tl = -0.6;
To = 0.6;

peaks = find( Af < Tl | Af > To);
Af(peaks) = ( Af(peaks-1) + Af(peaks+1) ) / 2;

这种方法的问题是您的大纲有时最多包含 6 个样本。 因此,您需要使用 while 循环分多个步骤进行平滑:

Af = data.example1;
% Thresholds
Tl = -0.6;
To = 0.6;

% initialisation
peaks = find( Af < Tl | Af > To);
counter = 0;

while ~isempty(peaks)
    peaks = find( Af < Tl | Af > To);
    Af(peaks) = ( Af(peaks-1) + Af(peaks+1) ) / 2;
    counter=counter+1;
end

经过 6 次迭代后,您将得到以下结果: enter image description here

关于Matlab 滤波器加速数据中的电尖峰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154067/

相关文章:

c++ - 64 位 Vivek 的虚拟相机

c# - 如何过滤数组以删除错误的值(如噪声)?

algorithm - 除了显而易见的用途之外,柏林噪声还有其他用途吗?

java - Java中Matlab的audioread()或waveread()

matlab - zeroes 函数的正确参数类型是什么?

django - 如何在 Django ORM 中查询不区分大小写的数据?

javascript - 基于数组过滤对象

matlab - 3d 矩阵中周围单元格的索引和值

oop - MATLAB - 仅列出子类提供的所有方法?

java - 柏林噪音发生器的奇怪结果