2014-02-21 97 views
1

我正在做一些音頻處理。我已經能夠將一些audiofiles加載到MATLAB中,播放它們,混合它們併合成信號。MATLAB中的低通濾波器返回NaN值

但是,現在我想在音頻編輯程序中提取類似於均衡器或低通濾波器的基礎。我知道MATLAB有很多濾波器和內置的濾波器設計工具;不過,我只想添加一個簡單的低通濾波器。我發現這個指南: ​​

f = 44100; 
n = [1:f]; 
note_a = 440; 
note_csharp = 554.365; 
note_e = 659.255; 
chord_a = sin(2*pi*(note_a/f)*n)+sin(2*pi*(note_csharp/f)*n)+sin(2*pi*(note_e/f)*n); 
fNorm = 200/(f/2); 
[b,a] = butter(10, fNorm, 'low'); 
chords_low = filtfilt(b, a, chord_a); 

我沒有錯誤,但在濾波器的輸出所有的值是NaN。這是爲什麼?這首歌是立體的,可不可以呢?

+0

調用butter()之前f&fNorm的值是什麼?所有(無限(時髦))的結果是什麼? – Max

+0

f的值爲44100 fNorm的值爲0.0091 all(isfinite(funky))has value [1,1] – user1661303

+0

我收到了downvote。任何人都在意解釋我做錯了什麼,以便我下次可以避免這樣做?我認爲這個問題很明確,但也許我錯了。這也不是過分簡單。我在發帖前試着用Google搜索答案半小時。請隨時指出我做錯了什麼。 – user1661303

回答

1

您的濾波器對於截止頻率低的設計類型來說過高,所以您會遇到數字問題。爲了快速解決問題,請將您的Butterworth filter的順序降低到略低於10的值.8階濾波器適用於您的設計,或者提高截止頻率也會導致實際值輸出。

如果您需要濾波器的設計中指定的頻率響應,則需要級聯低階部分。 See a detailed old answer I made for information on how to go about thistf2sos功能在這裏是你的朋友。

+0

聽起來比我的例外更加突出,但工作。謝謝。 – user1661303