|
Zero Crossing Counter) t. b% J0 `" R4 U8 |& a& U
6 ]- P4 Q: |$ |" k% Z: h; u& g 8 r# S6 S* _' n7 G$ A; {
8 H; `2 H! { a% X& q2 D
In some DSP applications, it can be very helpful to know how many times your signal has crossed the zero-line (amplitude origin). : @4 {( e/ R. U9 ?4 N9 `
2 H: t$ I# d/ d( d; f+ MHow is this helpful? Well, zero-crossings can tell you very quickly if your signal is composed of high frequency content or not. Let's say your sample rate is 50kHz and over a small window of 1,000 samples there are 500 zero-crossings. That would mean that every two samples crosses the zero-line (i.e. 12.5kHz)
6 V4 l" D, l1 N4 f( g; K, g6 k4 ?& w$ Z+ p B6 M" O, ^' S
In speech processing, the zero-crossing counts can help distinguish between voiced and un-voiced speech. Un-voiced sounds are very noise-like ('Shh' and 'Sss' for example). In addition, zero-crossings could also be used to determine if your signal has a DC offset. If you signal is 'muted' and you are not seeing alot of zero-crossings might mean that your signal is offset from the zero-line: p z; G$ Q# U4 ]- Z" @+ Z. _
: ~6 Y7 F) D* N6 k, i0 OOne nice thing about the matlab code below is that it is implemented in a very DSP-friendly way. It ports very easily into C-Code and does minimizes the amount of conditional statements for faster processing time. |
评分
-
查看全部评分
|