Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search

Example Ripple Calculations in Matlab

Let's first consider the passband ripple spec, dB. Converting that to linear ripple amplitude gives, in Matlab,

format long;
dp=10^(0.1/20)-1
dp =
0.01157945425990
Let's check it:
>> 20*log10(1+dp)
ans =
0.10000000000000
>> 20*log10(1-dp)
ans =
-0.10116471483635

Ok, close enough. Now let's set the stopband ripple to 1/10 times the passband ripple and see where we are:

>> ds=dp/10;
>> 20*log10(ds)
ans =
-58.72623816882052

So, that's about 60 dB stop-band rejection, which is not too bad.

Setting the stopband ripple to 1/100 times the passband ripple adds another 20 dB of rejection:

>> ds=dp/100;
>> 20*log10(ds)
ans =
-78.72623816882052
which is close to the high fidelity'' zone of 80dB SBA

• In FIR filter-design functions such as firpm, the weighting for each band is proportional to one over the ripple amplitude in that band. (We saw previously that the ripple amplitude is where is minimized.)

• Thus, for a unity-gain lowpass-filter, a weighting of 1 passband and 10 in the stopband yields close to 60 dB of stopband attenuation, as derived above.

• The function firpmord in Matlab finds the order needed to achieve a given set of (more user friendly) specifications.

Next  |  Prev  |  Up  |  Top  |  JOS Index  |  JOS Pubs  |  JOS Home  |  Search