声音信号下采样与重构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信号与系统课程实践报告

1容与要求

采集一段人说话时的声音,并进一步经过若干次的取样,从而得到对同一段连续信号在不同取样频率下的离散信号,比如最初的取样频率是44kHz,那么经过下取样后可以得到在22kHz、11kHz、5.5kHz、2.75kHz等频率下的取样结果。试针对该信号及其取样信号,分析取样率对信号重构的影响,通过编写重构运算程序计算重构误差。

2 思路与方案

注:原理见信号书P184-185页

首先,将采样后的信号进行快速傅里叶变换到频域,根据时域采样定理,使用低通滤波器对信号频谱进行滤波,获得原始信号的所有信息,然后根据下采样频率恢复原来的声音信号。将恢复的声音信号和原始信号分别在空域和频域进行相减,然后与原始信号的空域和频域曲线相比较,分析重构信号与原始信号的误差,即信号重构误差。

3 成果展示

原始信号

取样信号(22k,11k,5.5k,2.75k)

重构信号(22k,11k,5.5k,2.75k)

22k时重构误差

代码:

[X,fs] = audioread('D:\文本文档\01-江山此夜.wav'); ts = 1/fs;

N = length(X)-1;

t = 0:1/fs:N/fs;

Nfft = N;

df = fs/Nfft;

fk = ( -Nfft/2:Nfft/2-1) * df;

subplot(211)

t_range=[0,350,-2,2];

plot(t, X);

axis(t_range);

Original_f = ts * fftshift( fft( X, N ));

subplot(212)

f_range=[-4000,4000,0,0.6];

plot(fk, Original_f);

axis(f_range);

%对信号进行采样

%采样频率为22kHz

deX = resample(X, 22000, 44100);

ts = 1/22000;

N = length(deX)-1;

t = 0:1/fs:N/fs;

Nfft = N;

df = fs/Nfft;

fk = ( -Nfft/2:Nfft/2-1) * df;

figure(2)

subplot(211)

t_range=[0,200,-2,2];

plot(t, deX);

axis(t_range);

deX_f = ts * fftshift( fft( deX, N )); subplot(212)

f_range=[-8000,8000,0,0.6];

plot(fk, deX_f);

axis(f_range); %对信号进行重构

% BP=fir1(300,[00,6000]/(fs/2));

% reX = filter(BP, 1, deOrginal_f);

% reX_sound = ifft(reX);

BP=fir1(300,[100,6000]/(fs/2));

reX = filter(BP, 1, deX);

reX = resample(reX, 44100, 22000);

ts = 1/22000;

N = length(reX)-1;

t = 0:1/fs:N/fs;

Nfft = N;

df = fs/Nfft;

sound(reX, fs);

fk = ( -Nfft/2:Nfft/2-1) * df;

figure(3)

plot(t, reX);title('重构信号');

reX_f = ts * fftshift( fft( reX, N )); figure(4)

f_range=[-4000,4000,0,0.6];

plot(fk, reX_f);

axis(f_range);

%采样前和采样后的振幅相减

reX = reX(1:N-1,:);

de_re = X - reX;

figure(5)

plot(t(:,1:N-1), de_re);title('重构误差');

信号与系统课程实践报告

4 总结与感想

经过此次 MATLAB 课程设计我学到了很多知识和学习方法。在信号与系统课上所学的那点知识需要结合实践才有用处。所以为了做好这次的课程设计,我上网搜索了许多与此有关的知识,这个过程中我也学会了好多。在这次设计中,我学到了对信号的采样定理的应用,以及信号的重构,并通过观察 MATLAB 所生成的频谱图,进一步了解了有关信号的采样与重构,对信号的采样程度进行比较其误差,了解不同采样程度的重构信号和原信号所产生的差异。通过对不同的采样频率对同一信号进行下采样并进行信号重构,分析了各个采样频率下信号的重构误差,理解了采样信号恢复原始信号全部信息的原理,实现了奈奎斯特采样定律下信号重构方法。

5参考资料

[1]吴大正. 信号与线性系统分析(第4版)[M]. 高等教育, 2004.

相关文档
最新文档