|
Zero Crossing Counter
; B- \2 z {4 G4 C8 U" u. j, c" K. H: O! c
& x Z- D3 ?8 m( M+ G' f: ~7 @ ]' x N! L4 x( K) j
In some DSP applications, it can be very helpful to know how many times your signal has crossed the zero-line (amplitude origin).
9 m0 Y4 J& E( K# Z! h2 T' p0 L* f$ l3 F1 G# s$ P- @% q K0 Z
How 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)0 V1 H* t) p5 l: q2 R
# R7 n) y$ W5 {( w
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
# c0 D8 P1 a4 @2 r* i6 D6 ]* D$ i( o; @8 C
One 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. |
评分
-
查看全部评分
|