【发布时间】:2014-03-23 01:15:50
【问题描述】:
我正在做一些音频处理。我已经能够将一些音频文件加载到 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。这是为什么?这首歌是立体声的,是吗?
【问题讨论】:
-
在调用 butter() 之前 f & fNorm 的值是多少? all(isfinite(funky)) 的结果是什么?
-
f 的值为 44100 fNorm 的值为 0.0091 all(isfinite(funky)) 的值为 [1, 1]
-
我收到了反对票。有人愿意解释我做错了什么,以便我下次可以避免这样做吗?我认为这个问题已经说得很清楚了,但也许我错了。它也不过分简单化。在发布之前,我尝试用谷歌搜索答案半小时。请随时指出我做错了什么。
-
我认为你在 meta 上得到了很好的答案。如果您删除最后一部分(这是一个不同的问题),我会投票重新打开它。
标签: matlab audio filter signal-processing