MATLAB 中的低通/带通滤波器设计

Posted

技术标签:

【中文标题】MATLAB 中的低通/带通滤波器设计【英文标题】:Lowpass/Bandpass filter design in MATLAB 【发布时间】:2012-05-17 19:24:13 【问题描述】:

对于 MATLAB 中的模拟通信系统设计,首先我需要做这两个设计:

    设计一个低通滤波器[slow]=lowpassfilter(s,fcut,fs),它过滤输入信号s,截止频率为fcut,采样频率为fs,单位为赫兹。

    设计一个带通滤波器[sband]=bandpassfilter(s,fcutlow,fcuthigh,fs),它过滤输入信号s,截止频率为fcutlowfcuthigh,采样频率为fs,单位为赫兹。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

我发现这个问题有很多观点,但仍然没有很好的答案。

以下代码将满足您的需求。由于没有指定过滤器类型,我使用了一个巴特沃斯过滤器来演示它。 s 是输入信号,x 是滤波后的信号。 fs 是以赫兹为单位的采样率。

% Design and apply the lowpass filter
order = 4;
fcut  = 8000;
[b,a] = butter(order,fcut/(fs/2),'low');
x     = filter(b,a,s);


% Design and apply the bandpass filter
order    = 10;
fcutlow  = 1000;
fcuthigh = 2000;
[b,a]    = butter(order,[fcutlow,fcuthigh]/(fs/2), 'bandpass');
x        = filter(b,a,s);

【讨论】:

【参考方案2】:

Matlab 有 fdatool 用于滤波器设计。 Here 是文档。您可以使用fdatool 和信号处理工具箱来完成所有这些任务。

【讨论】:

是的,我知道,但关键是我需要从其他函数的输出中获取输入,因此我没有 fcut 或 fs 的特定值。所以当我在里面写 fs 时,它给出了一个错误:S 我想你应该改变你的问题的措辞。如果您以某种方式知道 fs(先验),则只需检查信号的 fft 以确定您要过滤的频带。

以上是关于MATLAB 中的低通/带通滤波器设计的主要内容,如果未能解决你的问题,请参考以下文章

滤波器设计基于matlab GUI窗函数法高通+低通+带通带阻FIR滤波器设计含Matlab源码 072期

DSP教程第36章 FIR滤波器的Matlab设计(含低通,高通,带通和带阻)

滤波器基于matlab GUI高通+低通+带通+带阻FIR滤波器设计含Matlab源码 1346期

滤波器基于matlab GUI高通+低通+带通+带阻FIR滤波器设计含Matlab源码 1345期

求用matlab实现fir滤波器(低通、高通,带通)

用matlab设计低通滤波器