MATLAB实验——卷积与滤波

26

实验目的与意义

  1. 学习脉冲响应的定义,理解卷积计算的原理。
  2. 熟悉conv函数,掌握在matlab中计算卷积的方法。
  3. 熟悉randn函数,掌握在matlab中对音频信号加噪的方法。
  4. 学习filterDesiner滤波器的使用,掌握在matlab中对音频信号降噪的方法。

实验过程

  1. 导入第三次实验中获得的音频文件exp.wav,定义变量wave和fs分别为音频信号和采样率。同时生成原音频信号频谱图。 [wave, fs] = audioread("exp.wav");
    L = length(wave);
    time = L/fs;
    subplot(131);
    plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave))),'linewidth',1.5);
    title('加噪前频谱');
    grid on;
  1. 使用randn函数对音频信号wave进行加噪,噪声类型为高斯噪声,加噪后的音频信号为wave_noise。同时生成加噪后的频谱图。 noise = 0.7*randn(L,1);
    wave_noise = wave+noise;
    sound(wave_noise,fs); subplot(132);
    plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave_noise))),'linewidth',1.5);
    title('加噪后频谱');
    grid on;
  1. 使用filterDesigner滤波器对加噪后的音频信号进行降噪,降噪后的音频为wave_bpf。因为从加噪后的频谱图可以看出,220Hz、262Hz、330Hz、392Hz、440Hz、524Hz为音频的主要内容,所以使用带通滤波器只保留220Hz-524Hz的信号。同时生成降噪后的频谱图。 bpf = BandPass_220_524;
    wave_bpf = conv(wave_noise,bpf,'same');
    sound(wave_bpf,fs); subplot(133);
    plot([-L/2:L/2-1]/time,abs(fftshift(fft(wave_bpf))),'linewidth',1.5);
    title('降噪后频谱');
    grid on;