Prev: Pitch recognition of a musical note on a smart phone
Next: Contribution of amplitude and phase information to human perception of a timbre
From: Michael Plante on 23 Sep 2009 11:25 >On Tue, 22 Sep 2009 16:11:40 -0500, turboii wrote: > > >>>> if i run the filter as is (at 250kS/s), the spectrum of the filter is >>>> stretched by 2. Is there an easy way to modify the filter taps to >> change >>>> the filter's sampling rate? >>> >>>A dull bruteforce solution is increase the number of taps by the factor >>>of 2 by sinc interpolation. The better way is usung two stages: one is >>>the legacy filter, the other is the filter to upsample the result by the >> >>>factor of 2. >>> >>> >> so to double the smapling rate, i would simply double the number of taps >> and interpolate between each coefficient? so for example, if my taps >> were: >> [3, 5, 10, 10, 5, 3] >> and i just used linear interpolation, the new coefficients would be: >> [3, 4, 5, 7.5, 10, 10, 10, 7.5, 5, 4, 3] >> >> is that correct? > >Yes. At the risk of pointing out the obvious, that's one short of doubled in length...
From: Martin Eisenberg on 23 Sep 2009 16:06 Tim Wescott wrote: > On Tue, 22 Sep 2009 16:11:40 -0500, turboii wrote: >> so to double the smapling rate, i would simply double the >> number of taps and interpolate between each coefficient? so >> for example, if my taps were: >> [3, 5, 10, 10, 5, 3] >> and i just used linear interpolation, the new coefficients >> would be: [3, 4, 5, 7.5, 10, 10, 10, 7.5, 5, 4, 3] >> >> is that correct? > > Yes. Actually, you'd have to interpolate from the end values to the notional zeros beyond as well because linear interpolation is convolution with a triangle function. In general, any interpolator will lengthen the new impulse response. Also note that interpolation does the job only if the original filter is lowpass. To extend a nonzero response at old Nyquist over the new bandwidth, you'll need to redesign a filter for the new rate. Martin -- Quidquid latine scriptum est, altum videtur.
From: Jerry Avins on 23 Sep 2009 16:25 Martin Eisenberg wrote: > Tim Wescott wrote: >> On Tue, 22 Sep 2009 16:11:40 -0500, turboii wrote: > >>> so to double the smapling rate, i would simply double the >>> number of taps and interpolate between each coefficient? so >>> for example, if my taps were: >>> [3, 5, 10, 10, 5, 3] >>> and i just used linear interpolation, the new coefficients >>> would be: [3, 4, 5, 7.5, 10, 10, 10, 7.5, 5, 4, 3] >>> >>> is that correct? >> Yes. > > Actually, you'd have to interpolate from the end values to the > notional zeros beyond as well because linear interpolation is > convolution with a triangle function. In general, any interpolator > will lengthen the new impulse response. > > Also note that interpolation does the job only if the original filter > is lowpass. To extend a nonzero response at old Nyquist over the new > bandwidth, you'll need to redesign a filter for the new rate. This makes me impatient. "I don't know in detail what this filter does, what specifications it was designed to meet, but I want to double the sample rate." That's possible, and necessary in some rare circumstances, but wasteful in general. A newly designed filter would likely meet the design desiderata more closely and use fewer taps than one doubled by formula. The difficulty is that the filter's optimum function needs to be found from documentation unlikely to exist, or deduced from its purpose in the design. That requires thought, an activity to be avoided whenever possible. Jerry -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
From: turboii on 28 Sep 2009 16:44
thanks for the help. I think i will end up designing a new filter for 250kHz after all and try to get as close as possible to the filter i am trying model. I tried interpolation the filter's coefficients, but all it caused was mirroring at +/-62.5 kHz, just like when i decimated the input stream |