Article View: comp.dsp
Article #99Re: Remez-Exchange Filter Design
From: Miguel Oyarzun
Date: Sun, 09 Aug 1992 23:26
Date: Sun, 09 Aug 1992 23:26
85 lines
3611 bytes
3611 bytes
mek@guinan.psu.edu (Mark E. Kotanchek) writes:
>Hi folks,
>I'm hoping somebody out there in netland can help me with a little problem
>associated with the design of a lowpass filter to be used as part of a
>decimating FIR filter. I used Matlab's "remez" function to design a filter
>having 0.5 dB ripple in the passband and greater than 80 dB down in the
>stopband.
>Just for giggles, I decided to generate a white noise data set and run it
>through the filter using a time-domain convolution. Although the resulting
>spectrum was as designed, this test wasn't really representative of the
>the actual case which would be processing a continuous data stream on a TI
>C30. Therefore, to avoid the "ramping" behavior introduced by the
>convolution, I just grabbed the interior section (i.e., after the filter
>had been loaded) and did an fft. ALAS, this spectrum did not match my
>filter design--in fact, it missed my criteria for stopband rejection by 3-
>or 40 dB!!!
[... stuff deleted ...]
>I suspect that the problem with the filter stems from a filter design
>presumption of a cyclic data set; however, I can't prove it. Alternate
>hypotheses include that the continuous filtered spectra represent an
>convolution of a sinc function (due to a rectangular data set) with the
>designed frequency response. If you have any ideas as to what creates this
>behavior, I'd appreciate the edification. More importantly, I still need
>to design a filter having the desired behavior when operating on a
>continuous data stream!!!!
[... more stuff deleted ...]
I believe the problem is not in the filter design, but in the
generation of the averaged noise spectra. I noticed in the Matlab
script included in your posting that you did not window the filtered
data in the calculation of the averaged spectra.
This results in unacceptably high "spectral leakage" into the
stopband region. The following changes to your script will
illustrate the problem.
>% Filter the signal against a real data stream
> x=rand(1,N);
> [y,yf]=filter(remezCoeff,1,x); % load up the filter
> [z,zf]=filter(hammingCoeff,1,x); % load up the filter
> Rspectrum=zeros(1,N);
> Hspectrum=zeros(1,N);
Wind = blackman(N);
> for index=1:DataBlocks
> x=rand(1,N); % generate the data set of N points
> [y,zf]=filter(remezCoeff,1,x,yf); % filter the data
> [z,zf]=filter(hammingCoeff,1,x,zf);
Rspectrum = Rspectrum + abs(fft(Wind'.*y)); % add the results
^^^^
Hspectrum = Hspectrum + abs(fft(Wind'.*z));
^^^^
> end
For more details on the use of windows in spectrum analysis, I recommend
the classic article
Harris, F.J., "On the Use of Windows for Harmonic Analysis
with the Discrete Fourier Transform," Proc. IEEE. vol. 66,
pp. 51-83, Jan. 1978.
>Thanks,
Hope this helps,
>Mark.
>---
>Mark Kotanchek
>Guidance & Control Dept - 363 ASB
>Applied Research Lab/Penn State
>P.O. Box 30
>State College, PA 16804
>e-mail: mek@guinan.psu.edu (NeXTmail)
>TEL: (814)863-0682
>FAX: (814)863-7843
Miguel Oyarzun
moyarzun@bbn.com
Technical Details
Message-ID:
<l8bactINNlub@news.bbn.com>Path:
arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!rpi!bu.edu!news.bbn.com!bbn.com!moyarzunReferences:
<8pd1Hx2l-8@atlantis.psu.edu>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!zaphod.mps.ohio-state.edu!rpi!bu.edu!news.bbn.com!bbn.com!moyarzun From: moyarzun@bbn.com (Miguel Oyarzun) Newsgroups: comp.dsp Subject: Re: Remez-Exchange Filter Design Message-ID: <l8bactINNlub@news.bbn.com> Date: 9 Aug 92 23:26:21 GMT References: <8pd1Hx2l-8@atlantis.psu.edu> Lines: 85 NNTP-Posting-Host: bbn.com