首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >巴特沃思带通滤波器阶数为8

巴特沃思带通滤波器阶数为8
EN

Stack Overflow用户
提问于 2015-01-06 23:00:42
回答 1查看 535关注 0票数 0

有一些关于如何在Matlab中创建3个带通巴特沃斯滤波器的问题。

我需要一个较低的截止频率,应该是625的整数倍,下一个应该是1875,2500赫兹。

我想要一个低频范围的带通滤波器,比如(80 - 100 hz?)一个在中频(400 hz?)一个在高频范围内(4 4khz?)。当然不能超过奈奎斯特的限制。

如何创建这3个过滤器并将其应用于一段音乐?

有没有人有办法在butter命令中使用多个频率?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-01-06 23:47:48

首先,您需要对音乐文件进行波形读取,以便将其加载到Matlab中(这是在时域中),

接下来,你想创建3个带通滤波器(巴特沃思)

您有两个执行路径,在时域或在频域。

在时域中:

代码语言:javascript
运行
复制
[x1 Fs nbits] = wavread('yourfile.wav'); %Fs is your sample frequency, x1 is your vector/matrix depending on single channel or dual channel.

现在你只需要设计你的过滤器。您可以使用fdesign.bandpass作弊(请参阅http://uk.mathworks.com/help/dsp/ref/fdesign.bandpass.html)

使用matlab的巴特沃斯滤波器命令

代码语言:javascript
运行
复制
[b,a] = butter(order,NormalizedCutOff); %you have to work out the Normalized Cut Off frequency using your sampling frequency or period, your desired cut-off etc.

如果您想要多个截止频率,请使用c1 c2代替NormalizedCutOff (即b,a=c1(8,0.2 0.6,' pass ');) %作为频带阻挡,将pass更改为stop

代码语言:javascript
运行
复制
freqz(b,a) %The frequency response of your filter
dataIn = x1; %your music
dataOut = filter(b,a,dataIn); %filter command filters your music

你可以用wavwrite文件来收听它,或者使用(声音(dataout,fs))

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

https://stackoverflow.com/questions/27801299

复制
相关文章

相似问题

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