Reply by Randy Yates November 24, 20102010-11-24
Randy Yates <yates@ieee.org> writes:
> [...] > The fact that the stopband is 70 dB or so.
Woops - I mis-stated that number. Eyeballing my graph again I'd say 55 or 60 dB. -- Randy Yates % "Midnight, on the water... Digital Signal Labs % I saw... the ocean's daughter." mailto://yates@ieee.org % 'Can't Get It Out Of My Head' http://www.digitalsignallabs.com % *El Dorado*, Electric Light Orchestra
Reply by Randy Yates November 24, 20102010-11-24
John McDermick <johnthedspguy@gmail.com> writes:

>> John, this filter doesn't look all that great: >> > > Why does the filter look bad? What is it exactly that you are looking > at that makes you say that the filter looks bad?
The fact that the stopband is 70 dB or so. If you need your images to be attenuated more than that, you'll have to come up with a better filter. I was assuming the images at N * 16 kHz, +/- 440 Hz (N > 0), are what you were referring to as "resampling artifacts" - perhaps I am mistaken. Please clarify which part(s) of that spectrum constitute the "artifacts" you are referring to. -- Randy Yates % "Remember the good old 1980's, when Digital Signal Labs % things were so uncomplicated?" mailto://yates@ieee.org % 'Ticket To The Moon' http://www.digitalsignallabs.com % *Time*, Electric Light Orchestra
Reply by Randy Yates November 24, 20102010-11-24
robert bristow-johnson <rbj@audioimagination.com> writes:
> [...] > the other part of the noisy-looking part of spectrum is probably from > the roundoff error. i dunno where the odd-harmonic distortion comes > from.
Yeah, I couldn't figure that out either. Perhaps it's requantization error. -- Randy Yates % "So now it's getting late, Digital Signal Labs % and those who hesitate mailto://yates@ieee.org % got no one..." http://www.digitalsignallabs.com % 'Waterfall', *Face The Music*, ELO
Reply by rickman November 24, 20102010-11-24
On Nov 23, 6:06&#4294967295;pm, John McDermick <johnthedsp...@gmail.com> wrote:
> >Try plotting the fixed > >point output of the impulse input vs. the average of the fixed point > >output. &#4294967295;That will show the noise floor in a relative way, but still > >not in an absolute way. > > Do you mean plotting X - mean(X) &#4294967295;??? &#4294967295;...where X contains the > magnitudes expressed in dB > > If so, here is the plot: > > http://img593.imageshack.us/img593/6756/fig4.png
I meant plotting X/mean(X). Or just plot X. That is what Randy did for you. That tells you how well your filter works. Using the ratio to the floating point filter just shows you where the floating point filter is really good (or more accurately, ideal) rather than showing where the fixed point filter is bad. Each of the peaks in your initial graph corresponds to a null in the filter. So the floating point filter does a better job of making nulls which results in the peaks in your comparison graph. Do you really care about the nulls? As Randy was saying, a stopband of -60 dB is not so fantastic. But if that is good enough for your needs, I'd say you are done. Rick
Reply by robert bristow-johnson November 24, 20102010-11-24
On Nov 24, 12:49&#4294967295;am, John McDermick <johnthedsp...@gmail.com> wrote:
> > John, this filter doesn't look all that great: > > Why does the filter look bad? What is it exactly that you are looking > at that makes you say that the filter looks bad?
well, the frequency response of the filter with coefficient you give is consistent with the spectrum you show where the spectral lines of images are only reduced by 60 or 70 dB. you understand that quantizing the coefficients will change your frequency response "slightly". from a dB perspective, the degradation of frequency response will be more noticeable in the stopband where a small numerical error results in more dB relative to the stopband energy level. the other part of the noisy-looking part of spectrum is probably from the roundoff error. i dunno where the odd-harmonic distortion comes from. r b-j
Reply by Rune Allnor November 24, 20102010-11-24
On Nov 23, 3:53&#4294967295;pm, John McDermick <johnthedsp...@gmail.com> wrote:
> How do you get rid of resampling artifacts? > > The P/Q fixed-point resampler algo I am working on takes as input a > signal which has been upsampled by P (zero insertion) and low-pass > filters the upsampled signal (fc = min[1/P,1/Q] ). In the final step > every Qth filter output sample is kept. The artifacts seems to get > worse when P/Q is much larger than 1...for example when P/Q = 6. > The low-pass filter is an 8th order IIR filter split into 4 second- > order sections. > > I fed the resampler with an impulse sampled at 16000Hz and compared > the magnitude spectrum of the output with the magnitude spectrum of > the output from a floating point resampler.
Don't do that. Compare apples with apples and oranges with oranges. First represent thet input signal as a sequence of floating-point numbers, and use the floating-point resampler on this sequence. Compare spectra of these input and output signals. Then resample the input signal to whatever fixed-pt precision you use, and run it through the fixed-pt resampler. Note that in this version the filter coefficients of your FIR also have to be represented as fixed-pt numbers. Now compare these input and output spectra. Once you are done with this, compare the spectra of the floating pt and fixed pt input signals. The difference is due to quantization noise. There is nothing you can do about it, except understand why it's there and what causes it. Rune
Reply by John McDermick November 24, 20102010-11-24
> John, this filter doesn't look all that great: >
Why does the filter look bad? What is it exactly that you are looking at that makes you say that the filter looks bad?
Reply by Randy Yates November 23, 20102010-11-23
John McDermick <johnthedspguy@gmail.com> writes:

>> Resampling artifacts are folded aliases and requantization effects. >> Set the cutoff frequency lower? > > I've tried, but it doesn't seem to help much. > > >> What is the rationale for this configuration? >> Why not a polyphase FIR ? > > I have considered a polyphase, but this implementation is more > efficient in terms of memory and cycle consumption. Or maybe > I am just overlooking something? Also, I am working with some > "tight" filter requirements. > > >> Describe the full picture. > > Ok. The filter coefficients look like this: > > Numerator Coefficients > > Section 1 0.0284 -0.0381 0.0284 > Section 2 0.4836 -0.8218 0.4836 > Section 3 0.7560 -1.3301 0.7560 > Section 4 0.2201 0.2201 0 > > Denominator Coefficients > > Section 1 1.0000 -1.7690 0.8374 > Section 2 1.0000 -1.7850 0.9305 > Section 3 1.0000 -1.8010 0.9828 > Section 4 1.0000 -0.8796 0
John, this filter doesn't look all that great: http://galois.digitalsignallabs.com/filter.png I'm not sure if there are any numerical precision issues here, but judging from the relatively mild stopband of -70 dB or so, I would think not. This is in Octave's double-precision floating point. --Randy
> > Coeff for the first section would look like this > > Coeff = [0.0284 -0.0381 0.0284 1.0000 -1.7690 0.8374] > > Input x is in Q1.15 format > > Coeff is in Q2.14 format > > Output y is in Q1.15 format > > 2nd order IIR filter pseudo code: > > c1=coeff(1)*x(m) > c3=c1+z(1) > c4=bitshift(c3,-14) > y(m)=c4 > > c5=coeff(2)*x(m) > c7=c5+z(2) > c9=coeff(5)*y(m) > z(1)=c7-c9 > > c12=coeff(3)*x(m) > c14=coeff(6)*y(m) > z(2)=c12-c14 > > > > Output spectrum looks like this > > LINK: http://img101.imageshack.us/img101/6171/fig3.png > > for a 440Hz sine sampled at 16000Hz which is resampled to 96000Hz.
-- Randy Yates % "She's sweet on Wagner-I think she'd die for Beethoven. Digital Signal Labs % She love the way Puccini lays down a tune, and mailto://yates@ieee.org % Verdi's always creepin' from her room." http://www.digitalsignallabs.com % "Rockaria", *A New World Record*, ELO
Reply by John McDermick November 23, 20102010-11-23
>Try plotting the fixed >point output of the impulse input vs. the average of the fixed point >output. That will show the noise floor in a relative way, but still >not in an absolute way.
Do you mean plotting X - mean(X) ??? ...where X contains the magnitudes expressed in dB If so, here is the plot: http://img593.imageshack.us/img593/6756/fig4.png The plot shows the magnitude spectrum of the resampler output (in dB) - the mean of that spectrum.
Reply by rickman November 23, 20102010-11-23
On Nov 23, 1:01&#4294967295;pm, John McDermick <johnthedsp...@gmail.com> wrote:
> > How do you know these graphs show a problem? &#4294967295;Rather than showing how > > "bad" the fixed point resampler is, maybe you are showing how "good" > > the floating point resampler is. &#4294967295; > > I would just like to see how far away I am from an "ideal" solution > (something > that is as close as possible to a floating point solution).... > right??? > > > I don't even see the 440 Hz tone in your data. > > So clearly using the floating point design as a reference doesn't give > > you any sense of absolute noise levels... which is what you really > > care about, right? > > The 440 Hz sine is "notched" out when you subtract the output > spectrums > from each other...You can see the two spectra here: > > http://img101.imageshack.us/img101/6171/fig3.png
Yes, I understand. That is my point. The two approaches match well in some areas an not others... so? Where you see 100 dB peaks, you can't say if they are peaks in the fixed point design or nulls in the floating point design. Right? Do you care if your fixed point approach is 100 dB worse than the floating point approach if the floating point has 500 dB of head room? Until you show me the response relative the carrier or full scale or something else that is actually relevant, I am not convinced you have a problem. Rick