Windows7 系统环境
1.3 需求分析与功能说明
首先选择动态型输入,我选择输入一个由三个不同频率正弦信号叠加组合组成而成的模拟信号公式,100sin(2πf1t)
+100sin(2πf2t ) +100sin(2πf3t),以此作为测试信号。 第二步骤中的频谱分析需要用到fft快速傅里叶变换,再根据MATLAB语句编写用图像的方式展示出信号的幅频与相频特性。这步完成后,指定IIR滤波器的类型为圆形滤波器,带通,FIR滤波器用凯赛尔窗来实现带通滤波,这些滤波各种参数会通过MATLAB编程中体现,并且通过图像的方式把滤波的窗口显示出来。最后的数字滤波是最重要的部分,我基本能成功完成此步骤,将原始信号过滤成一个规则的正弦信号,以上就成功实现了该系统的功能。
6
系统设计过程
2.1 信号发生器 2.1.1 说明
选择画出100sin(2πf1t) +100sin(2πf2t )+100sin(2πf3t )三
个分量的图,分别令三个频率为f1=2000,f2=5000,f3=8000,axis函数用法: axis一般用来设置axes的样式,包括坐标轴范围,可读比例等 axis([xmin xmax ymin ymax])。在给定的时域内,输入采样序列,生成了含有三个不同频率的混合信号波形。
2.1.2 源代码
t=0:1/20000:0.01;
f1=2000,f2=5000,f3=8000;
ft=100*sin(2*pi*f1*t)+100*sin(2*pi*f2*t)+100*sin(2*pi*f3*t); plot(t,ft); grid on;
axis([0 0.01 1.1*min(ft) 1.1*max(ft)]); xlabel('t'),ylabel('ft');
2.1.3 结果截图
7
2.2 频谱分析 2.2.1 说明
使用 FFT 对步骤1生成的测试信号进行频谱分析并展示其幅频特性与相频特性,指定需要滤除的频带,通过选择滤波器类型(IIR / FIR),确定对应的滤波器(带通)技术指标。频谱分析的部分:抽样点数N为512点,首先还是先画出抽样信号的连续形式;接下来画出实际抽样信号,运用stem()函数(该函数即一个x对应一个y,刚好是实现抽样的功能,抽样点数为512.)第三步就是求其幅度频谱的步骤,首先对原信号函数ft做N(512)点的fft快速傅里叶变化得到Fw,这一步就是在计算N点离散傅里叶变化,接下来将求出的Fw取绝对值就是它的振幅谱。第四步求相位谱则运用到angle()函数,该函数拥有求相位角的功能。在抽样信号的幅度谱中发现了三个频率的幅度谱,需要进行滤波。
2.2.2 源程序
fs=20000;N=512;T=1/fs; %采样点数N t=0:1/fs:0.01;
f1=2000,f2=5000,f3=8000;
ft=100*sin(2*pi*f1*t)+100*sin(2*pi*f2*t)+100*sin(2*pi*f3*t);
subplot(4,1,1); plot(t,ft);grid on;
axis([0 0.01 1.1*min(ft) 1.1*max(ft)]); xlabel('t'),ylabel('ft'); title('抽样信号的连续形式');
subplot(4,1,2);
8
stem(t,ft);grid on;
axis([0 0.01 1.1*min(ft) 1.1*max(ft)]); xlabel('t'),ylabel('ft'); title('实际抽样信号');
k=0:N-1;
Fw=fft(ft,N); %计算N点离散傅里叶变化 subplot(4,1,3);
plot(k,abs(Fw),'-*');grid on; %绘制振幅-频率图 axis([0 600 0 10000]);
xlabel('Frequency'),ylabel('|F(k)|'); title('抽样信号幅度谱')
subplot(4,1,4);
plot(k,angle(Fw));grid on; %绘制相位谱 axis([0 100 -4 4]); title('抽样信号相位谱')
2.2.3 结果截图
2.3 滤波器设计 2.3.1 说明
9
根据步骤2中确定的IIR/FIR数字滤波器技术指标设计滤波器,得到相应的滤波器系数,并展示该滤波器的幅频(衰减)、相频特性。
(1)IIR DF:使用双线性变换法,可选择滤波器:椭圆模拟带通滤波器;
(2)FIR DF:使用窗口法,可选择凯萨尔窗。
以上分别为II R和FI R滤波器的设计及其幅频特性和相频特性。
2.3.2 源代码
%IIR DF设计:
%Step1:产生含有3个正弦分量的信号
Fs=20000; t=(1:100)/Fs; %抽样频率、时间轴
s1=100*sin(2*pi*t*2000);s2=100*sin(2*pi*t*5000);s3=sin(2*pi*t*8000); s=s1+s2+s3; subplot(511); %组成信号、指定图形位置 plot(t,s);title(' 原始信号');
xlabel('时间(s)' ); ylabel('信号波形' ); %Step2:产生一个4阶IIR带通滤波器
%通带为100Hz到200Hz,并得出其幅频响应
[b,a]=ellip(2,0.5,20,[1000,2500]*2/Fs); %得到滤波器的系数矩阵 [H,w]=freqz (b,a,512); %H为滤波器的系统函数 subplot(5,1,2); plot(w*Fs/(2*pi),abs(H)); title('IIR带通滤波器幅频响应' );
xlabel(' 频率(Hz)' );ylabel(' 幅度' ); axis([0 10000 0 1.5]);
figure
%FIR DF设计: As=70;
ws=0.2* pi; wp=0.3* pi;
tr_width=wp-ws; %过渡带宽度
M=ceil((As-7.95)*2*pi/14.36./tr_width+1)+1; disp(['滤波器的长度为',num2str(M)]); beta=0.1102*(As-8.7); n=[0:1:M-1];
10