• 代码如下这里直接使用了matlab中的fir1函数进行滤波,具体fir1函数如何使用可以百度
Fs=2048;  %采样频率,根据香农采样定理,被采样信号频率不可以高于采样频率的一半,否则无法恢复出原信号
%产生的信号频率小于Fs/2,如果不满足此条件会发生信号频率的混叠,达不到预期的滤波效果
dt=1.0/Fs;
T=1;N=T/dt;t=[0:N-1]/N
x1=sin(2*pi*50*t)+sin(2*pi*300*t)+sin(2*pi*500*t);   %产生一个频率为 50,300,500Hz的信号
subplot(3,1,1);plot(t,x1);  %绘制输入信号       
axis([0,0.1,-2,2]);   %将x轴范围限制在0-0.1,y轴限制在-2到2     
P=fft(x1,N);           %对信号进行傅里叶变换
Pyy=2*sqrt(P.*conj(P))/N;             
f=linspace(0,Fs/2,N/2);       
subplot(3,1,2);plot(f,Pyy(1:N/2)); %画出信号频谱图
b=fir1(48,0.1); %滤波器取48长度,截至频率为0.1,取出低频信号,这里使用了matlab滤波函数
%b=fir1(48,[0.2 0.4]);    %产生带通滤波器,取出中间的信号,滤去两边信号
%b=fir1(48,0.4,'high');     %让高频通过滤除两边信号
x2=filter(b,1,x1);
subplot(3,1,3);plot(t,x2);axis([0,0.1,-2,2]); %绘制滤除后的信号
  • 滤波效果图如下
    使用matlab实现fir滤波,产生波形,并进行过滤_FPGA与信号处理