我有一个信号 产生尖峰。有没有办法让我将这些峰值的幅度降低到更符合信号的整体平均值? Link to example data in text file
数据图片
我正在使用Octave 3.2.4 / Matlab
由于
答案 0 :(得分:1)
您似乎想要一些可靠的估算平均值的方法。 我能想到的一种方法是定义一定比例的异常值(比如说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 );