Reply by Jon Harris October 4, 20052005-10-04
The documentation on the analog devices sample rate conversion chips has some 
good theory info.  Start here and also check out the datasheets for the parts 
mentioned:

http://www.analog.com/en/content/0,2886,765%255F807%255F9690,00.html

By the way, if it were me, I would do this in one stage rather than 4.  It is 
much simpler to implement that way (though probably requires more memory, but 
that's not generally an issue in Matlab).

-- 
Jon Harris
SPAM blocker in place:
Remove 99 (but leave 7) to reply


"Govind" <govind_s@conceptemsys.com> wrote in message 
news:WoqdnUGsSq4auN_eRVn-gQ@giganews.com...
> >Govind <govind_s@conceptemsys.com> wrote: >> >>> I am trying to compute SNR with the method you've >>> suggested. This time I am trying upconversion of a signal from >>> 8KHz to 44.1KHz. I have implemented a four stage SRC code in >>> matlab (with ratios 3/2, 3/2, 7/5 and 7/4 with filter taps 414, >>> 54, 84 and 70 respectively using remez algorithm). I multiply the >>> output by a factor of 441 (3*3*7*7) in time domain to compensate >>> for interpolation stage losses. The frequency response seems >>> to be good. But still I am getting SNR not more than 30-40 DB. >> >>You could consider using Lagrangian interpolation instead of >>this cascade of filters. >> >>Steve >> > > Hi Steve, > > Thanks for the reply. I have started looking for interpolation methods. > Would you like to suggest/give me related docs or book? > > Govind > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
Reply by Govind October 4, 20052005-10-04
>Govind <govind_s@conceptemsys.com> wrote: > >> I am trying to compute SNR with the method you've >> suggested. This time I am trying upconversion of a signal from >> 8KHz to 44.1KHz. I have implemented a four stage SRC code in >> matlab (with ratios 3/2, 3/2, 7/5 and 7/4 with filter taps 414, >> 54, 84 and 70 respectively using remez algorithm). I multiply the >> output by a factor of 441 (3*3*7*7) in time domain to compensate >> for interpolation stage losses. The frequency response seems >> to be good. But still I am getting SNR not more than 30-40 DB. > >You could consider using Lagrangian interpolation instead of >this cascade of filters. > >Steve >
Hi Steve, Thanks for the reply. I have started looking for interpolation methods. Would you like to suggest/give me related docs or book? Govind This message was sent using the Comp.DSP web interface on www.DSPRelated.com
Reply by Steve Pope October 3, 20052005-10-03
Govind <govind_s@conceptemsys.com> wrote:

> I am trying to compute SNR with the method you've > suggested. This time I am trying upconversion of a signal from > 8KHz to 44.1KHz. I have implemented a four stage SRC code in > matlab (with ratios 3/2, 3/2, 7/5 and 7/4 with filter taps 414, > 54, 84 and 70 respectively using remez algorithm). I multiply the > output by a factor of 441 (3*3*7*7) in time domain to compensate > for interpolation stage losses. The frequency response seems > to be good. But still I am getting SNR not more than 30-40 DB.
You could consider using Lagrangian interpolation instead of this cascade of filters. Steve
Reply by Govind October 1, 20052005-10-01
Hi r b-j,

I am trying to compute SNR with the method you've suggested. This time I
am trying upconversion of a signal from 8KHz to 44.1KHz. I have
implemented a four stage SRC code in matlab (with ratios 3/2, 3/2, 7/5
and
7/4 with filter taps 414, 54, 84 and 70 respectively using remez
algorithm). I multiply the output by a factor of 441 (3*3*7*7) in time
domain to compensate for interpolation stage losses. The frequency
response seems to be good. But still I am getting SNR not more than 30-40
DB. I am sure that I am not making a mistake in taking the delay into
account. 

Ray had suggested to check 'Single precision float round-off error'. But
I
am using simple matlab floating point variables, which are by default
double-precision. (Ray, please correct me if I am failing to understand
your point.)

Please help me out, I am very eager to see 100+DB SNR!

Thank you 

Govind

>in article urKdnY7SWfelqaneRVn-gw@giganews.com, Govind at >govind_s@conceptemsys.com wrote on 09/23/2005 12:58: > >> I have written a simple matlab code for converting sampling rate from
8KHz
>> to 16KHz. Now I have to measure it's SNR. For this I converted both
the
>> signals to frequency domain (taking their FFTs) and then computed >> signal-to-noise ratio (sum of squared input spectral samples devided
by
>> sum of squared difference between the output spectral samples and the >> input spectral samples). With this method I am getting SNR not more
than
>> 50-60dB (even for very high filter lengths). Can you please tell me
what's
>> wrong with my method > >not a particular good method to compute SNR. try upsampling a collection
of
>known sine waves from 8 to 16kHz. then generate the exact same sine
waves
>(from the same math) but at the 16 kHz rate. make sure you have your
timing
>lined up because your SRC will have some delay. then subtract to get a >difference (or error or "noise) signal and use that in your SNR
computation.
> >> (I have seen posting mentioning that SNR should go as high as 140dB)? > >how long is your impulse response of your LPF? to get 140, you will
need
>about a 64 tap FIR. > > >-- > >r b-j rbj@audioimagination.com > >"Imagination is more important than knowledge." > > >
This message was sent using the Comp.DSP web interface on www.DSPRelated.com