Matlab - 设计滤波器截止频率
截止频率
通常,我们将信号幅值衰减3dB处的频率作为截止频率,这是为何?
首先,明确以下两点:
- 幅值的平方为功率
- 信号功率衰减一半时的频率被称为截止频率
当信号功率衰减一半 (1/2) 时,幅值衰减 sqrt(1/2) ,那么其对应的 dB 值为:
20*log10(sqrt(2)/2) ≈ -3dB
举例说明
滤波器设计
设计一个 butterworth 低通滤波器,采样频率 100Hz ,截止频率 20Hz ,阶次为 4 。
clc
fs = 100; % 采样频率
tLen = 2; % 时间长度
pointNum = fs*2; % 采样点数
fpass = 20; % 通带频率
wp = fpass/(fs/2); % 计算归一化角频率
[b,a] = butter(4,wp); % 设计滤波器
% 获取频率特性
[H,F] = freqz(b,a,pointNum,fs);
H = 20*log10(abs(H));
hold off
plot(F,H);grid on;hold on
fcAmp = H(fpass*2*pointNum/fs+1);
stem(fpass,fcAmp,'linewidth',2);
text(fpass+2,fcAmp-1,num2str(fcAmp));
setPlot('滤波器幅频特性','frequency(Hz)','amptitude(dB)',[F(1) F(end)],[-50,10]);
setPlot
程序中用到的 setPlot 函数用于设置图形的 title , xlabel , ylabel , xlim , ylim.
function [ ] = setPlot( varargin )
% setPlot()
% setPlot(title)
% setPlot(title,xlabel)
% setPlot(title,xlable,ylabel)
% setPlot(title,xlabel,ylabel,xlim)
% setPlot(title,xlable,ylabel,xlim,ylim)
narginchk(0,5); % 判断输入参数是否足够
grid on;
axis tight;
if nargin>=1
title(varargin{1});
end
if nargin>=2
xlabel(varargin{2});
end
if nargin>=3
ylabel(varargin{3});
end
if nargin>=4
xlim(varargin{4});
end
if nargin>=5
ylim(varargin{5});
end
end
滤波器幅频特性
从图中可以看出,按照要求设计得到的滤波器,截止频率 20Hz 对应的幅值衰减为 -3.0103dB ,约为 -3dB ,与理论所述相吻合。
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 litreily的博客!