我正在做一些音频处理。我已经能够将一些音频文件加载到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。这是为什么?这首歌是立体声的,可以吗?
对于设计类型而言,滤波器的阶数过高,截止频率低,因此会出现数值问题。为了快速解决问题,请将Butterworth滤波器的阶数降低到略低于10的阶数。8阶滤波器适合您的设计,或者提高截止频率也会得到真正有价值的输出。
如果要使用设计指定频率响应的滤波器,则需要级联低阶部分。请参阅我所作的详细旧答案,以获取有关如何执行此操作的信息。该tf2sos
功能是您的朋友。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句