MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文的FIR低通滤波器设计及主要的滤波程序如下:fs=8000;%采样频率Fs=8000Hzshuru(1:256)=sin((0:255)/fs*2...
MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤波器实现函数。本文的FIR低通滤波器设计及主要的滤波程序如下: fs=8000; %采样频率Fs=8000Hz
shuru(1:256)=sin((0:255)/fs*2*pi*500)+sin((0:255)/fs*2*pi*1000)+ sin((0:255)/fs*2*pi*2500); %产生长度为256的输入信号,包含500Hz、1000Hz和2500Hz的正弦波 xishu=fir1(16,1500/8000*2); %用Hamming窗得到16阶的滤波器系数
shuchu=conv(shuru,xishu); %用卷积指令conv对输入信号进行滤波 t=(0:255)/fs;
w=8000*(0:127)/256;
shuru1=fft(shuru,256); %把输入信号进行256点fft变换,用于后续画信号频谱图 shuchu1=fft(shuchu,256); %把输出信号也进行256点fft变换
subplot(2,2,1) %画出输入信号的时域图 plot(t,shuru);grid on;title('输入信号时域图');
以上是滤波器的设计以及滤波过程主要程序,画图程序简略。 程序执行结果得到的输入输出信号的时域频域图如图3所示:
图3 Matlab编程实现滤波前后的时域频域图形
程序从新整理了下 和上面一样的,下面为图
fs=8000; %采样频率Fs=8000Hz
shuru(1:256)=sin((0:255)/fs*2*pi*500)+sin((0:255)/fs*2*pi*1000)+sin((0:255)/fs*2*pi*2500);
%产生长度为256的输入信号,包含500Hz、1000Hz和2500Hz的正弦波
xishu=fir1(16,1500/8000*2); %用Hamming窗得到16阶的滤波器系数
shuchu=conv(shuru,xishu); %用卷积指令conv对输入信号进行滤波
t=(0:255)/fs;
w=8000*(0:127)/256;
shuru1=fft(shuru,256); %把输入信号进行256点fft变换,用于后续画信号频谱图
shuchu1=fft(shuchu,256); %把输出信号也进行256点fft变换
subplot(2,2,1) %画出输入信号的时域图
plot(t,shuru);grid on;title('输入信号时域图');
展开