我有一个产生尖峰的信号。我有没有办法将这些峰值的幅度降低到更符合信号的整体平均值? 链接到文本文件中的示例数据
数据图像
我正在使用 Octave 3.2.4/Matlab
谢谢
似乎您需要某种方法来稳健地估计您的平均值。我能想到的一种方法是定义异常值的百分比(比如 5%),然后对条目进行排序并丢弃前 5%。取剩下的平均值 - 就是这样!
s = sort( abs(signal) );
TopPer = 0.05; % remove top 5% as outliers
n = floor( numel(signal) * ( 1 - TopPer ) );
robustMean = mean( s(1:n) );
% clamped signal
clampedSignal = min( max( signal, -robustMean ), robustMean );