LTI冲激响应卷积实验-附加音效
程序员文章站
2022-03-19 21:41:23
...
Introduction
这一部分内容主要以学习截图为主。方便自己回顾,给大家推荐一个非常优秀的B站uper,所有内容均出自他的课程。网站链接分享在此DR_CAN,Ph.D. in Dynamics and Control 机器人工程师。
本实验是关于笔记第三节现代控制理论-工程数学基础(3)-LTI冲激响应卷积。
利用家里条件,在洗手间模拟冲激响应环境。尝试使用木棍,铲子及铁具相互碰撞,对比实验。
Experiment
具体步骤如下:
1、选取一段原声音乐
2、用手机录下冲激响应
3、用处理软件去除部分杂音
4、在matlab中跑以下代码
代码如下:
close all
clear
clc;
[Y1,fs1]=audioread( 'zhuimeng.mp3' ); %获取音频 1 文件,并返回采样数据到向量 y中, fs 表示采样频率
[Y2,fs2]=audioread( 'TC.mp3' ); %获取音频 1 文件,并返回采样数据到向量 y中, fs 表示采样频率
ft1 = Y1(:,1);
sigLength1 = length(ft1); %获取声音长度
t1=(0:sigLength1-1)/fs1; %求出音频 1 对应的时间坐标
subplot(3,1,1);
plot(t1,ft1); %画出音频 1 的波形图
title( ' 追梦人的波形图 ' );
xlabel( '时间(s)' );
ylabel( ' 振幅 ' );
grid;
ft2 = Y2(:,1);
sigLength2 = length(ft2); %获取声音长度
t2=(0:sigLength2-1)/fs2; %求出音频 2 对应的时间坐标
subplot(3,1,2);
plot(t2, ft2); %画出音频 2 的波形图
title( ' 冲击响应的波形图 ' );
xlabel( '时间(s)' );
ylabel( ' 振幅 ' );
grid;
ft=conv(ft1,ft2); %将两段音频进行卷积
sigLength = length(ft); %获取声音长度
t=(0:sigLength-1)/fs1;
subplot(3,1,3);
plot(t,ft); %画出卷积后的波形图
title( '卷积后的波形图 ' );
xlabel( '时间(s)');
ylabel( ' 振幅 ' );
grid;
sound(ft,fs1)
图上和代码只对一种情况进行分析。
笔者对比三种物体相互碰撞产生的冲激响应,及卷积情况,排除误差外,卷积后的结果基本上相同。
致敬DR_CAN! 毕。
推荐阅读