我在做音频处理。我已经能够加载一些音频文件到MATLAB中,播放它们,混合它们并合成信号。
然而,现在,我想提取类似于音频编辑程序中的均衡器或低通滤波器的基。我知道MATLAB有很多过滤器和内置的过滤器设计工具,不过我只想添加一个简单的低通滤波器。我找到了这个指南:http://www.aquaphoenix.com/lecture/matlab10/page4.html
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。为什么会这样呢?这首歌是立体声的,是吗?
发布于 2014-03-06 16:57:14
你的滤波器的阶数太高,对于设计类型来说,截止频率太低,所以你会遇到数值问题。要快速修复,请将巴特沃斯滤波器的顺序降到10以下。8阶文件器可用于您的设计,或者提高截止频率也会带来实际的价值输出。
如果您想要一个具有设计所指定的频率响应的滤波器,则需要级联低阶区段。请参阅我给出的详细的旧答案,以了解如何解决这一问题。。tf2sos
函数是您在这里的朋友。
https://stackoverflow.com/questions/21935871
复制相似问题