M=144;% 滤波器阶数
N=256;% 采样点数
fs=1024;% 采样频率
X1=SIN(64,N,fs); % 调用sin函数
X2=SIN(128,N,fs);
X3=SIN(256,N,fs);
%原信号
X=X1+X2+X3;
t=[0:1/fs:(N-1)/fs];
subplot(3,2,1);plot(t,X);%输出原信号
xlabel('t');ylabel('X');title('原信号X'); grid on;axis([0 0.25 -4 4]);
%原信号做谱
xr=X;xi=[zeros(1,N)];
[yr,yi]=dft11(xr,xi,0,1);%调用dft11函数
k=1:N;
f=(k-1)*fs/N;%频率
A(1)=yr(1)/N; %第一个点幅值
m=2:N/2;
A(m)=2*yr(m)/N;% 第2至第N/2点幅值
subplot(3,2,2);stem(f(1:N/2),A);
xlabel('f');ylabel('A');title('原信号X的幅频特性');grid on;axis([0 600 0 1.5]);
%求加窗后的滤波器单位脉冲响应函数
h=FIRwin(144,80,200,1024,1,3)%调用FIRwin
subplot(3,2,3);plot(h);
xlabel('t');ylabel('h');title('加窗后滤波器单位脉冲响应函数h');
grid on;axis([0 150 -0.2 0.2])%输出加窗后滤波器单位脉冲响应函数
%加窗后滤波器单位脉冲响应函数的幅频特性
[Ha Hp f]=Frequzp(h,N);%调用Frequzp函数,求频谱
subplot(3,2,4);
plot(f,Ha);xlabel('f');ylabel('Ha');
title('h的幅频特性');grid on;%输出加窗后滤波器单位脉冲响应函数的幅频特性
%%输出滤波后的时域x
t=[0:1/fs:(N-1)/fs];
y1=conv1(X,h); %调用conv1函数,对X进行滤波
t1=length(y1);%t1=N+(M+1)-1=N+M
y=y1(M/2+1:t1-M/2)%删除y1两端的部分,使其长度为N,与X长度相同
subplot(3,2,5);
plot(t,y);axis([0 0.25 -2 2]);
xlabel('t');ylabel('x');title('滤波后的时域x'); grid on;%输出滤波后的时域x图
%滤波后的X的幅频特性
s=[zeros(1,N)];
[yr yi]=dft11(y,s,0,1);%调用dft11函数,做单边谱
H(1)=yr(1)/N;
m=2:N/2;
H(m)=2*yr(m)/N;
k=1:N/2;
f=(k-1)*fs/N;%频率
subplot(3,2,6);
stem(f,H);
xlabel('f');ylabel('H');title('滤波后的X的幅频特性');
grid on;axis([0 600 0 1.5]);%输出滤波后的X的幅频特性
FIR滤波器_FIR滤波器_源码
版权申诉
5星 · 超过95%的资源 102 浏览量
2021-10-04
00:16:19
上传
评论 9
收藏 4KB ZIP 举报
爱牛仕
- 粉丝: 93
- 资源: 4716
评论5