(编辑:此问题来自从原始WAV中提取二进制磁条卡数据)

这是我的信号(顶行)和应用的基本IIR滤波器(底行)



(编辑:我的任务是将信号分解为二进制0(频率F)和二进制1(频率2F),这就是为什么它被称为F2F。屏幕快照看起来微不足道,但存在一个潜在的问题,即出现一个双重峰,并且在真实峰之间的波谷中也出现了误报。)

我的问题是,有什么方法可以使信号平滑? IIR是我最好的选择吗?

我至少可以看到三种可能性:


IIR y [n] = 0.9 * y [n-1] + 0.1 * x [n],其中x [<0时y [x] = 0
移动/加窗平均-在周围放置面积为1.0的贝尔曲线,说w ​​= 10每侧采样并积分bellSmooth(x)=积分[xw,x + w] {bell(k).samp(k)} dk
确定期望的频率和FFT /删除高阶bin /反向FFT

我可能已经回答了我自己的问题,但这可能是不完整的,我确定我使用了错误的术语。我也无法真正预测利弊。后一种方法吸引力较小,因为它需要了解基本信号频率。但是第二种方法也是如此。我需要选择合适的窗口长度。

还有其他方法吗?

评论

您要保留/测量原始信号的哪些特征?例如,峰点之间的时间,峰高,阈值以上的时间等等?

峰值之间的时间...甚至不需要太精确-它是F2F信号(我将修改问题以引用信号源并提供上下文)

这是用于在线还是离线处理?

我的论文主题是数据流中的噪声平滑。您喜欢这篇文章还是主题?

#1 楼

平均化的效果

使用移动平均滤波器将消除信号中的不规则现象。噪声变为E / N,其中N是移动平均滤波器的长度。使用MA的副作用是信号峰值变宽和变浅。

另外,信号的频率内容也会改变。时域移动平均滤波器与通过Sinc函数对频域信号进行卷积是一回事。

峰值检测算法
峰值检测是9/10工程问题中的常见问题。 (不是真的,但是TON取决于它们)

通常这样做是:

中值阈值

此处是一个示例:

1) Look for all peaks in your signal. (i.e., a point that is larger than the two
   adjacent points
2) take this list of points and for each one of them compute:
   med_threshold = median(Peak,Width) + constantThresholmedian   where median is the
   median value of the data centered at "Peak" with Width being the number of 
   points to look at.
       a) The Width(usually written as Lambda in literature) and constantThreshold
          (usually written as C) are determined by trial and error and using the ROC
          curve (Acronym below)
3) if the peak's magnitude is above this threshold accept it as a true peak. 
   Else: Discard it, its a false peak
4) Generate a Receiver Operating Characteristic Curve(ROC) to how well the algorithm
   is performing.


确定频率

现在您已经有效地发现了峰的时间本地化,找到它们的频率:

suppose we have the signal X = [ 0 0 0 0 1 3 **9** 2 1 1 **2** 1 1 ] 
1) 9 and 2 are both potential peaks 
2) Lets use a window of 5 and  a threshold =2
so at 9 we have [1 3 9 1 2] -> [1 1 2 3 9]  so Median(9,5) = 2
9 > 2 +2, therefor its a peak
Lets take a look at 2: [ 1 1 2 1 1] -> [1 1 1 1 2 ] Median(2,5) = 1
2 < 1+2, therefor it is NOT a peak. 


替代频率估计

1) Use the locations of the peaks to generate a pulse train
      a) this means create sum(Dirac_delta[t-L(n)]) where L(n) is the nth time that 
      you've localized through median thresholding
2) Apply FFT Algorithm
3) Look for largest peak. 


其他研究途径
br />虽然您可能会对峰值信号保持满意,但是有些算法可应用于完全不同的问题,称为“起步检测”。

起病检测是音乐信息检索研究中的一个重要领域。它用于确定何时播放音符。



如果您认为磁带头信号是高度采样的信号,则可以应用本文中可以找到的许多算法:

http://www.elec.qmul.ac.uk/people/juan/Documents/Bello-TSAP-2005.pdf

评论


$ \ begingroup $
“ [1 3 9 1 2]”如果您的窗口的宽度为5,那么如何得到数字2?
$ \ endgroup $
–太空
2012年4月11日在21:19

$ \ begingroup $
注意我如何排列数字。中位数是有序集合中的中间数字。 [1 1 2 3 9] <-有序,中间数字为2。
$ \ endgroup $
–网络人
2012年12月12日下午13:07

$ \ begingroup $
看你的电话号码,他们是[1 3 9 1 1]。你从哪儿得到的2?
$ \ endgroup $
–太空
2012年4月12日15:44

$ \ begingroup $
@Mohammad在处理它时进行了一些编辑,被删除了。固定。
$ \ endgroup $
–网络人
2012年12月12日18:04

$ \ begingroup $
谢谢!现在,当您在音乐环境中说“音符”时,是指单个频率还是多个频率?还是没关系?我想看看这是否也可以与其他窄带(单音)应用程序一起使用。
$ \ endgroup $
–太空
2012年12月12日18:21