MATLAB实验——相关与混响

2023-10-22 08:40
文章标签 matlab 实验 相关 混响

本文主要是介绍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);

这篇关于MATLAB实验——相关与混响的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/260328

相关文章

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

matlab读取NC文件(含group)

matlab读取NC文件(含group): NC文件数据结构: 代码: % 打开 NetCDF 文件filename = 'your_file.nc'; % 替换为你的文件名% 使用 netcdf.open 函数打开文件ncid = netcdf.open(filename, 'NC_NOWRITE');% 查看文件中的组% 假设我们想读取名为 "group1" 的组groupName

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };