如何用MATLAB将低通改成中通滤波器
发布网友
发布时间:2023-09-27 03:23
我来回答
共1个回答
热心网友
时间:2024-12-03 12:13
1.
程序注释:有疑问的我标注出来了
f1=10;
f2=200;
fs=1000;
F1=f1/fs;
F2=f2/fs;
%
数字频率(此处应该是2*f1/fs,2*f2/fs)
fRange
=[0,15*F1,15*F1,1];
%
确定低通滤波器的截止频率
hVal=[1,1,0,0];
b=fir2(60,fRange,hVal);
%
b是产生的FIR滤波器的系数向量
[H,W]=freqz(b,1);
%
画出FIR滤波器的幅度特性和相位特性,freqz是matlab函数
subplot(3,1,1);plot(W/pi,abs(H));
%
W/pi是将数字频率归一化,abs(H))代表幅度
n1=0:511;
%因为你是要有两段不同频率的信号拼接而成,其实不分段也行
n2=512:1023;
n=[n1
n2];
x1=sin(2*pi*F1*n1);
x2=sin(2*pi*F2*n2);
x=[x1,x2];
y=filter(b,1,x);
%b是FIR滤波器系数(相当于分子),1是FIR滤波器分母(全1),x是待滤波信号
subplot(3,1,2);plot(
x);
subplot(3,1,3);plot(
y);
2.
要将低通滤波器改成带通比较简单
把fRange改成[0,2*(100-10)/fs,2*(100+10)/fs,1],
hVal改成[0,1,1,0],
x1=sin(2*pi*10*n);%此处我按n不分段处理
x2=sin(2*pi*100*n);
x3=sin(2*pi*200)*n;
x=x1+x2+x3;
y=filter(b,1,x);