MATLAB实验——相关与混响

实验目的与意义

  1. 学习相关运算,了解互相关与卷积运算的异同点,学会计算信号的互相关和自相关。
  2. 学习声波的回声与混响,了解其发生的原理,掌握用matlab对音频增加混响效果的方法。
  3. 学习声波在室内传播的系统模型,学会对系统参数的测量与估计。

实验过程

  1. 导入音频变量advice并截取单声道。
[advice, fs] = audioread('exp.wav');
advice = advice(:,1);
  1. 对音频增加混响效果。
  • 使用zeros函数生成一个1×fs大小的零矩阵echoed_pattern(可以看作一个离散形式的单位脉冲函数),并令其第一个元素为1。定义echoed_advice变量为advice和echoed_pattern的卷积结果。
  • 当echoed_pattern只有原点处有单位脉冲时,advice与它的卷积结果等于advice本身(即直射声波),画出echoed_pattern的函数图和直射声波的时域图。
  • 当在echoed_pattern上附加一个延迟0.1秒,幅值为0.7倍的延迟衰减分量时,advice与它的卷积结果等于混响声波,画出echoed_pattern的函数图和混响声波的时域图。
%直射声波
echoed_pattern = zeros(1,fs);
echoed_pattern(1) = 1;
echoed_advice = conv(advice, echoed_pattern);
sound(echoed_advice, fs);
figure('Name','直射声波');
subplot(211); stem((0:fs-1)/fs, echoed_pattern);
subplot(212); plot((1:length(echoed_advice))/fs, echoed_advice);

%混响声波
echoed_pattern(0.1*fs+1) = 0.7;
echoed_advice = conv(advice, echoed_pattern);
sound(echoed_advice, fs);
figure('Name','混响声波');
subplot(211); stem((0:fs-1)/fs, echoed_pattern);
subplot(212); plot((1:length(echoed_advice))/fs, echoed_advice);

在这里插入图片描述
对比时域图可知,增加混响效果后的音频明显幅值更大。

  1. 添加背景音乐
[bgm] = audioread('exp_BGM.wav');
advice = [echoed_advice, bgm(1:length(echoed_advice),1).*0.3];
sound(advice, fs);
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值