当前位置:文档之家› 哈工大试验方法和数字信号分析处理作业一

哈工大试验方法和数字信号分析处理作业一

题目:
(1)给定数字信号:
x(t)=sin(20*pi*t)+sin(100*pi*t)+sin(400*pi*t);
即该信号由10HZ,50HZ,200HZ。

三个正弦信号合成。

要求:
绘出上述给定数字信号的曲线x(t)。

低通滤波练习:
分别用FIR、IIR滤波器滤去50Hz、200Hz信号,保留10Hz信号;
绘出滤波前和滤波后的信号曲线,并做对比;
滤波过程中的问题讨论。

带通滤波练习:
用FIR滤波器滤去10Hz、200Hz信号,保留50Hz信号;
绘出滤波前和滤波后的信号曲线,并做对比;
滤波过程中的问题讨论。

(2)给定数字信号:
X(t)=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t)+0.6*randn(1,N)即在原信号上叠加上一个白噪声信号。

要求:
绘出上述给定数字信号的曲线x(t)。

分别用低通滤波器和带通滤波器(FIR、IIR任选)滤波、绘曲线对比、讨论。

注:
本次作业要求使用我们课上(§3-3、§3-4)所推导的滤波器(公式)滤波;
不许使用MATLAB中的滤波函数。

1.数字信号为:x(t)=sin(20*pi*t)+sin(100*pi*t)+sin(400*pi*t);时
因为,最大频率为200HZ,故由采样定理dt<=1/2*f max,可得dt<=0.0025s,取
dt=0.0003s,满足采样定理。

(1)绘出x(t)图像:
Matlab代码:
clear all
t=0:0.0005:0.6;
t1=0.0005;
F=15;
N=1201;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);
x1=sin(2*pi*10*t);
plot(t,x,'b');
图形如下:
图1 原始信号图像
(2)低通滤波练习:
1.FIR滤波器:
Matlab代码:
clear all
t=0:0.0005:0.6;
t1=0.0005;
F=15;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);
x1=sin(2*pi*10*t);
y(1201)=0;
for k=50:1100
for i=-20:20
if i==0
fi=2*F*t1;
else
fi=sin(2*pi*F*i*t1)/pi/i;
end
y(k)=y(k)+fi*x(k-i);
end
end
plot(t,x1,'k',t,x,'b',t,y,'r');
图像如下:
图2 FIR低通滤波信号图像
图3 FIR低通滤波信号图像i=-30:30,k=70:1100时
分析讨论:
由图可以看出,原始图像有正弦信号叠加后十分混乱,滤波后基本滤出了10HZ的信号,设计滤波器时,通过改变N1和N2以及采样的数量来生成不同的滤波后图像,最终选择了如上代码中的数值。

2.IIR滤波器:
Matlab代码:
clear all
t=0:0.0005:0.6;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);
x1=sin(2*pi*10*t);
w=tan(pi*30*0.0005);%求二阶滤波器系数
f0=(w*w)/(1+(2^0.5)*w+w*w);
f1=2*f0;
f2=(w*w)/(1+(2^0.5)*w+w*w);
g1=(-2*(1-w*w))/(1+(2^0.5)*w+w*w);
g2=(1-(2^0.5)*w+w*w)/(1+(2^0.5)*w+w*w);
y(1201)=0;
for i=1:3 %用二阶滤波器滤波三次
for k=3:1200
y(k)=f0*x(k)+f1*x(k-1)+f2*x(k-2)-g1*y(k-1)-g2*y(k-2);
end
x=y;
end
y=x;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);
plot(t,x1,'k',t,x,'b',t,y,'r');
图像如下:
图4 IIR低通滤波信号图像,阶数=8时
图5 IIR低通滤波信号图像,阶数=4时
图6 IIR低通滤波信号图像,阶数=2时
分析讨论:
阶数在2阶时严重失真,阶数在4阶时稍有好转,而阶数等于8时,滤波效果较好,但有些滞后,所以考虑滤波阶数不能太高或太低。

(2)带通滤波练习:
使用FIR滤波器滤波:
Matlab代码:
clear all
t=0:0.0005:0.6;
t1=0.0005;
dF=(50-10)/2;
F0=(10+50)/2;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t);
x1=sin(2*pi*10*t);
y(1201)=0;
for k=50:1100
for i=-20:20
if i==0
fi=4*dF*t1;
else
fi=2*sin(2*pi*dF*i*t1)*cos(2*pi*F0*i*t1)/pi/i;
end
y(k)=y(k)+fi*x(k-i);
end
end
plot(t,x1,'k',t,x,'b',t,y,'r');
图像如下:
图7 FIR带通滤波信号图像
分析讨论:
用FIR滤波器作带通滤波,虽然没有滞后,但在波峰处容易失真。

2.数字信号为:
x(t)=sin(20*pi*t)+sin(100*pi*t)+sin(400*pi*t) +0.6*randn(1,N) (1)叠加白噪声后的原始图像:
图8 叠加白噪声后的原始图像
(2)选用FIR滤波器滤波
FIR低通滤波器:
Matlab 代码:
clear all
t=0:0.0005:0.6;
t1=0.0005;
F=15;
N=1201;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t)+0.6*randn(1,N); x1=sin(2*pi*10*t);
y(1201)=0;
for k=50:1100
for i=-20:20
if i==0
fi=2*F*t1;
else
fi=sin(2*pi*F*i*t1)/pi/i;
end
y(k)=y(k)+fi*x(k-i);
end
end
plot(t,x1,'k',t,x,'b',t,y,'r');
图像如下:
图9 添加白噪声后FIR低通滤波信号图像
分析讨论:
滤波效果十分不好,虽然没有滞后,但失真严重。

(1)FIR带通滤波器:
Matlab 代码:
clear all
t=0:0.0005:0.6;
t1=0.0005;
dF=(50-10)/2;
F0=(10+50)/2;
N=1201;
x=sin(2*pi*10*t)+sin(2*pi*50*t)+sin(2*pi*200*t)+0.6*randn(1,N); x1=sin(2*pi*10*t);
y(1201)=0;
for k=50:1100
for i=-20:20
if i==0
fi=4*dF*t1;
else
fi=2*sin(2*pi*dF*i*t1)*cos(2*pi*F0*i*t1)/pi/i;
end
y(k)=y(k)+fi*x(k-i);
end
end
plot(t,x1,'k',t,x,'b',t,y,'r');
图像如下:
图10 添加白噪声后FIR带通滤波信号图像
分析讨论:
叠加白噪声后,带通滤波比低通滤波效果要好些,曲线较为光滑,但波峰失真严重。

相关主题