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?

Antworten (2)

Honglei Chen
Honglei Chen am 13 Nov. 2014

0 Stimmen

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 am 14 Nov. 2014

0 Stimmen

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 Kommentar

Honglei Chen
Honglei Chen am 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.

Melden Sie sich an, um zu kommentieren.

Tags

Gefragt:

am 13 Nov. 2014

Kommentiert:

am 25 Nov. 2014

Community Treasure Hunt

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

Start Hunting!

Translated by