用Matlab中的窗口法设计FIR滤波器

用Matlab中的窗口法设计FIR滤波器,matlab,filter,signal-processing,Matlab,Filter,Signal Processing,我必须根据给定的图设计FIR高通滤波器(附图)。使用具有不同截止频率的矩形窗口和Kaiser窗口 我的问题是,我能够产生相同宽度的阻带撕裂,但在给定的问题撕裂宽度随频率的增加而衰减。我应该使用fir1以外的命令吗 待设计的过滤器 我设计的滤波器输出 这是到目前为止我的代码 clc;clear all; close all; A=36; N=30; fs=48000; fc=10000; omega=2*fc/fs; k=0:1:N; beta=0.5842*((A-21)^0.4)+0.07

我必须根据给定的图设计FIR高通滤波器(附图)。使用具有不同截止频率的矩形窗口和Kaiser窗口

我的问题是,我能够产生相同宽度的阻带撕裂,但在给定的问题撕裂宽度随频率的增加而衰减。我应该使用fir1以外的命令吗

待设计的过滤器

我设计的滤波器输出

这是到目前为止我的代码

clc;clear all; close all;
A=36;
N=30;
fs=48000;
fc=10000;
omega=2*fc/fs;
k=0:1:N;
beta=0.5842*((A-21)^0.4)+0.07886*(A-21)
kaiser_win=kaiser(N+1,beta);
b_fir1 = fir1(N,omega,'high',kaiser_win);
f = linspace(0,10000,10000); %frequency vector
H_fir1 = freqz(b_fir1,1,f,fs);

plot(f,db(abs(H_fir1)))
grid
xlabel('frequency in Hz'), ylabel('amplitude in dB')
%axis([0 10000 -60 6])
title('Window method (FIR)')

好消息是,你的设计实际上很好,但你只是看它不同于你试图复制的图,它以对数频率标度绘制震级响应

要获得类似的曲线图,请使用semilogx,如下所示:

semilogx(f(2:end),db(abs(H_fir1(2:end))))
grid
xlabel('frequency in Hz'), ylabel('amplitude in dB')
axis([10 20000 -60 6])
这将为您提供如下图形:


欢迎来到堆栈溢出。你填写了一个写着“提问”的方框。问题用问号表示,可以回答。你忘了问一个问题,因此不可能回答这个问题。请陈述一个清楚、可回答的问题。你可能有兴趣在这个网站上阅读。