信号分析与处理实验五
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五:FIR数字滤波器设计与软件实现
一、实验目的(略)
二、实验内容及步骤(略)
三、相关程序
1、信号产生函数xtg清单
Function xt=xtg(N) %信号x(t)产生函数,并显示信号的幅频特性曲线
%xt=xtg产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率Fs=1khz
%载波频率fc=Fs/10=100Hz,调制正弦波频率f0=Fc/10=10Hz
N=2000;Fs=1000;T=1/Fs;Tp=N*T;
T=0:T:(N-1)*T;
fc=Fs/10;f0=fc/10; %载波频率fc=Fs/10,单频调制信号频率为f0=fc/10
mt=cos(2*pi*f0*t); %产生单频正弦波调制信号mt,频率为f0
ct=cos(2*pi*fc*t); %产生载波正弦波信号ct,频率为fc
xt=mt.*ct; %相乘产生单频调制信号xt
nt=2*rand(1,N)-1; %产生随机噪声nt
%=========设计高通滤波器hn,用于滤除噪声nt中的低频成分,生成高频噪声===== fp=150;fs=200;rp=0.1;rs=70; %滤波器指标
fb=[fp,fs];m=[0,1]; %计算remenzord函数所需参数f,m,dev
dev=[10^(-rs/20),(10^(rp/20)-1)/ (10^(rp/20)+1)];
[n,fo,mo,w]=remenzord(fb,m,dev,Fs); %确定remenz函数所需参数
hn=remenz(n,fo,mo,w); %调用remenz函数进行设计,用于滤除噪声nt中的低频成分yt=filter(hn,1,10*nt); %滤除随机噪声中低频成分,生成高频噪声yt
%=================================================================== xt=xt+yt; %噪声加信号
fst=fft(xt,N);k=0:N-1;f=k/Tp;
subplot(3,1,1);plot(t,xt);grid;
xlabel([0,Tp/5,min(xt),max(xt)]);
title(‘(a)信号加噪声波形’)
subplot(3,1,2);plot(f,abs(fst)/max(abs(fst)));grid;title(‘(b)信号加噪声的频谱’)
axis([0,Fs/2,0,1.2]);xlabel(‘f/Hz’);ylabel(‘幅度’)
2、实验程序清单
%实验五程序exp5.m
%FIR数字滤波器设计与软件实现
clear all;close all;
%=====调用xtg产生信号xt,xt长度N=1000,并显示xt及其频谱===========
N=1000;xt=xtg(N);
fp=120;fs=150;rp=0.2;rs=60; %输入给定指标
Fs=1000; T=1/Fs;Tp=N*T; k=0:N-1;f=k/Tp; t=0:T:(N-1)*T;
%(1)用窗函数法设计滤波器
wc=(fp+fs)/Fs; %理想低通滤波器截止频率(关于pi归一化)
B=2*pi*(fs-fp)/Fs; %过渡带宽度指标
Nb=ceil(11*pi/B); %blackman窗的长度N
hn=fir(Nb-1,wc,blackman(Nb));
Hw=abs(fft(hn,1024)); %求设计的滤波器频率特性
ywt=fftfilt(hn,xt,N); %调用函数fftfilt对xt滤波
subplot(3,1,1);plot(f,Hw/max(Hw)); grid;title(‘(a)低通滤波器幅频特性’) axis([0,Fs/2,-120,20]);xlabel(‘f/Hz’);ylabel(‘幅度’)
subplot(3,1,2);plot(t,ywt); grid;title(‘(b)滤除噪声后的信号波形’)
axis([0,0.5,-1,1]);xlabel(‘t/s’);ylabel(‘yw(t)’)
%=======(2)用等波纹逼近法设计滤波器======================== fb=[fp,fs];m=[1,0]; %确定remenzord函数所需参数f,m,dev
dev=[(10^(rp/20)-1)/(10^(rp/20)+1),10^(-rs/20)];
[Ne,fo,mo,W]=remenzord(fb,m,dev,fs); %确定remenz函数所需参数
hn=remenz(Ne,fo,mo,W); %调用remenz函数进行设计
Hw=abs(fft(hn,1024)); %求设计的滤波器频率特性
yet=fftfilt(hn,xt,N); %调用函数fftfilt对xt滤波
figure(2)
subplot(3,1,1);plot(f,Hw/max(Hw)); grid;title(‘(a)低通滤波器幅频特性’) axis([0,Fs/2,-80,10]);xlabel(‘f/Hz’);ylabel(‘幅度’)
subplot(3,1,2);plot(t,yet); grid;title(‘(b)滤除噪声后的信号波形’)
axis([0,0.5,-1,1]);xlabel(‘t/s’);ylabel(‘ye(t)’)