预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共14页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

课程设计目的 综合运用信号与系统、数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现从而加深对所学知识的理解,建立概念。 课程设计的基本要求 ①熟悉离散时间信号与系统的时域特性; ②掌握数字信号处理的基本概念,基本理论和基本方法; ③掌握序列快速傅里叶变换方法,利用序列傅里叶变换对离散信号和系统的响应进行频域分析; ④学会MATLAB的使用,掌握MATLAB的程序设计方法; ⑤掌握MATLAB设计各种熟悉滤波器的方法和对信号进行滤波的方法。 课程设计的内容 选择三个不同频段的信号对其进行频谱分析,根据信号的频谱特征设计三个不同的数字滤波器,将三路信号合成一路信号,分析合成信号的时域和频域特点,然后将合成信号分别通过设计好的三个数字滤波器,分离出原来的三路信号,分析得到的三路信号的时域波形和频谱,与原始信号进行比较,说明频分复用的特点。频分复用结构如图所示 课程设计实现步骤 产生三路信号 利用MATLAB语言产生三个不同频段的信号。 对三路信号进行频谱分析 画出三路信号时域波形,然后对信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性。 合成的后的信号 设计数字滤波器并画出频率响应 根据三路信号的频谱特点得到性能指标,由性能指标设计三个数字滤波器。在MATLAB中,可以利用函数fir1设计FIR滤波器,利用函数butte、cheby1和ellip设计IIR滤波器;最后利用MATLAB中的函数freqz画出个滤波器的频率响应。 低通滤波器的频率响应 带通滤波器的频率响应 高通滤波器的频率响应 信号合成 将三路信号进行叠加为一路信号。 用滤波器对信号进行滤波 要求学生用自己设计的滤波器对采集的信号进行滤波。在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。 通过三个滤波器后的三个信号: 分析得到信号的频谱 对得到的信号进行fft快速傅里叶变换,得到信号的频谱特性,与原始信号进行比较,并画出信号的时域波形和频谱。 课程设计的源程序 %产生三个正弦波,分别为40Hz,100Hz,150Hz A=2; f1=40; w1=2*pi*f1; t=0:.001:1; x1=A*sin(w1*t); subplot(3,1,1); plot(t,x1); axis([min(t)max(t)1.8*min(x1)1.8*max(x1)]); ylabel('x1(t)'); xlabel('Time(s)'); title('f=40Hz'); f2=100; w2=2*pi*f2; x2=A*sin(w2*t); subplot(3,1,2); plot(t,x2); axis([min(t)max(t)1.8*min(x2)1.8*max(x2)]); ylabel('x2(t)'); xlabel('Time(s)'); title('f=100Hz'); f3=150; w3=2*pi*f3; x3=A*sin(w3*t); subplot(3,1,3); plot(t,x3); axis([min(t)max(t)1.8*min(x3)1.8*max(x3)]); ylabel('x(t)'); xlabel('Time(s)'); title('f=150Hz'); %三正弦波的频域分析 figure; y1=fft(x1); N=1000; fs=1000; fd=fs/N; sp=abs(fft(x1)); sp1=fftshift(sp); sp=sp(1:N/2); f=0:fd:fd*(N/2-1); subplot(3,1,1); plot(f,sp); axis([min(f)max(f)1.8*min(sp)1.8*max(sp)]); xlabel('f(HZ)'); ylabel('y1'); y2=fft(x2); sp=abs(fft(x2)); sp1=fftshift(sp); sp=sp(1:N/2); f=0:fd:fd*(N/2-1); subplot(3,1,2); plot(f,sp); axis([min(f)max(f)1.8*min(sp)1.8*max(sp)]); xlabel('f(HZ)'); ylabel('y2'); y3=fft(x3); sp=abs(fft(x3)); sp1=fftshift(sp); sp=sp(1:N/2); f=0:fd:fd*(N/2-1); subplot(3,1,3); plot(f,sp); axis([min(f)max(f