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
,截止频率为fcutlow
和fcuthigh
,采样频率为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期