Help with fir1 needed

I have this code: nfilt=128; wnm=[cLw cHi]/15000; bm = fir1(nfilt,wnm); y_filteredm=filter(bm,1,data);
for the values wnm =[0.533300000000000 1] I get bm = NaN and for wnm = [0.844444444444445 1.00000000000000] I get the error "Frequencies must fall in range between 0 and 1." after I try to calculate bm. What did I do wrong?

Risposte (2)

Honglei Chen
Honglei Chen il 13 Nov 2014
Did you compute wnm from some other functions? This looks like a round off numeric issue. A simple fix could be adding the following line before you invoke fir1
wnm(wnm>1)=1
Ges1234
Ges1234 il 14 Nov 2014

0 voti

Thanks for your answer. That helped me with the error, but bm is still NaN if the higher frequency is 1. So as a workaround I inserted wnm(wnm==1)=0.9999999; and that works fine. It just seems odd that fir1 can't handle 1 as the higher frequency. I calculated wnm with this equation: wnm=[lowFreq highFreq]/(Fs/2);

1 Commento

Honglei Chen
Honglei Chen il 25 Nov 2014
The doc does say Wn needs to be between 0 and 1, not inclusive. You can also see it if you do
>> help fir1
HTH and sorry I didn't make that connection in my previous answer.

Accedi per commentare.

Tag

Richiesto:

il 13 Nov 2014

Commentato:

il 25 Nov 2014

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by