首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >低通滤波器在MATLAB中返回NaN值

低通滤波器在MATLAB中返回NaN值
EN

Stack Overflow用户
提问于 2014-02-21 13:32:41
回答 1查看 1.4K关注 0票数 1

我在做音频处理。我已经能够加载一些音频文件到MATLAB中,播放它们,混合它们并合成信号。

然而,现在,我想提取类似于音频编辑程序中的均衡器或低通滤波器的基。我知道MATLAB有很多过滤器和内置的过滤器设计工具,不过我只想添加一个简单的低通滤波器。我找到了这个指南:http://www.aquaphoenix.com/lecture/matlab10/page4.html

代码语言:javascript
运行
复制
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。为什么会这样呢?这首歌是立体声的,是吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-06 16:57:14

你的滤波器的阶数太高,对于设计类型来说,截止频率太低,所以你会遇到数值问题。要快速修复,请将巴特沃斯滤波器的顺序降到10以下。8阶文件器可用于您的设计,或者提高截止频率也会带来实际的价值输出。

如果您想要一个具有设计所指定的频率响应的滤波器,则需要级联低阶区段。请参阅我给出的详细的旧答案,以了解如何解决这一问题。tf2sos函数是您在这里的朋友。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21935871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档