数字信号多采样率设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验名称:多采样率数字信号处理
一.实验原理:
多采样率数字信号处理共分为3方面的问题:信号的整数倍抽取、信号的整数倍插值和信号的有理数倍速率转换。
Matlab 信号处理工具箱提供了抽取函数decimate 用于信号整数倍抽取,其调用格式为:
y=decimate(x,M)
y=decimate(x,M,n)
y=decimate(x,M,’fir’)
y=decimate(x,M,n,’fir’)
其中y=decimate(x,M)将信号x 的采样率降低为原来的
M 1,抽取前缺省地采用8阶Chebyshev Ⅰ型低通滤波器压缩频带。
y=decimate(x,M,n)指定所采用Chebyshev Ⅰ型低通滤波器的阶数,通常13 n 。
y=decimate(x,M,’fir’)指定用FIR 滤波器来压缩频带。
y=decimate(x,M,n,’fir’) 指定所用FIR 滤波器的阶数。
Matlab 信号处理工具箱提供了插值函数interp 用于信号整数倍插值,其调用格式为:
y=interp(x,L)
y=interp(x,L,n,alpha)
[y,b]=interp(x,L,n,alpha)
其中y=interp(x,L)将信号的采样率提高到原来的L 倍。
y=interp(x,L,n,alpha)指定反混叠滤波器的长度n 和截止频率alpha ,缺省值为4和0.5。
[y,b]=interp(x,L,n,alpha)在插值的同时,返回反混叠滤波器的系数向量。 信号的有理数倍速率转换是使信号的采样率经由一个有理因子M L 来改变,可以通过插值和抽取的级联来实现。Matlab 信号处理工具箱提供了重采样函数resample 用于有理倍数速率转换,其调用格式为:
y=resample(x,L,M);
y=resample(x,L,M,n);
y=resample(x,L,M,n,beta);
y=resample(x,L,M,b);
[y,b]= y=resample(x,L,M);
其中,y=resample(x,L,M);将信号x 的采样率转换为原来的M L 倍,所用的低通滤波器为kaiser 窗的FIR 滤波器。
y=resample(x,L,M,n)指定用x 左右两边各n 个数据作为重采样的邻域。 y=resample(x,L,M,n,beta)指定Kaiser 窗的FIR 滤波器的设计参数,缺省值为5。
y=resample(x,L,M,b)指定用于重采样的滤波器系数向量。
[y,b]=resample(x,L,M)除了得到重采样信号外,还返回所使用的滤波器系数向量。
二.实验内容:
1、令()cos(2)
s x n nf f π=,112s f f =,实现以下采样率的转换:
(1) 作2L =倍的插值;
(2) 作3M =倍的抽取;
(3) 作23L M =倍的采样率转换。
给出相对每一种情况下的数字滤波器的频率特性和频率转换后的信号波形。
2、录制一段语音信号,对录制的信号进行采样,画出采样前后语音信号的时域波形和频谱图,改变信号的采样率,输出改变采样率后信号的频谱,对比前后语音信号的变化。
三.程序:
(1)
n=0:30;
x=cos(2*pi*n/12);
y=interp(x,3);
figure;subplot(2,2,1),stem(x);
title('原始信号时域图');
xlabel('(a)');
subplot(2,2,2);
plot(abs(fft(x)));
title('原始信号频域图');
xlabel('(b)');
subplot(2,2,3);
stem(y);
title('插值后的信号时域图');
xlabel('(c)');
subplot(2,2,4);
plot(abs(fft(y)));
title('插值后的信号频域图');
xlabel('(d)');
(2)
t=0:.00025:1;
x=cos(2*pi*t/12);
y=decimate(x,3);
figure,subplot(2,2,1),stem(x(1:120));
title('原始信号时域图'),xlabel('(a)');
subplot(2,2,2),plot(abs(fft(x))),title('原始信号频域图'),xlabel('(b)'); subplot(2,2,3),stem(y(1:30));
title('抽取后的信号时域图'),xlabel('(c)');
subplot(2,2,4),plot(abs(fft(y)));
title('抽取后的信号频域图'),xlabel('(d)');
(3)
n=0:38;
x=cos(2*pi*n/12);
[y,b]=resample(x,2,3);
figure, subplot(2,2,1),stem(x);
title('原始信号时域图'),xlabel('(a)');
subplot(2,2,2),plot(b,'.'),title('滤波器的单位脉冲响应'),xlabel('(b)'); subplot(2,2,3),stem(y);
title('变换后的信号时域图'),xlabel('(c)');
w=(0:1023)*2/1024
subplot(2,2,4),plot(w,20*log10(abs(fft(b,1024))));
axis([0,1/4,-100,20]);
grid on title('滤波器的频率响应'),xlabel('(d)');