|
|
Zero Crossing Counter2 z# }8 }" R% |) T& Z1 d
: B( y5 `, ^& l
& p' Y8 ]% i+ h7 }9 C! X* t
& c; A8 _7 g) B1 j! _In some DSP applications, it can be very helpful to know how many times your signal has crossed the zero-line (amplitude origin). # }7 B1 C( j3 A. C
/ {- I; F* m9 J8 j4 n2 o- [
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)
6 J3 ~# y4 L' j+ ]& D# I- {" l# z
, s9 f: J5 i6 F3 ?8 t: mIn 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
" \0 ^, \" m% g( j! w# N# `8 w0 [% V9 v+ p: t8 z
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. |
评分
-
查看全部评分
|