首先当然要介绍什么时卷积 :
对于线性时不变系统而言,其输入与输出之间是卷积(Convolution),即系统的输入会对未来一段时间内的系统输出产生影响。下面推导卷积。
可以看出,冲击响应h(t)可以完全定义系统,即可以得到系统的冲击响应,再与任意输入做卷积,可得到相应输出。
关于以上性质,可以做有趣的一个实验,首先找一个空旷的地方,然后用力拍手或其他行动,并将声音录制下来,这样就制造出一个冲击输入,然后随意找一段音频,将两个声音导入Octave软件(matlab一样)中,将两个声音做卷积就可以模仿这个地方的混响了,很多公司都会在音乐厅最好的位置采集素材,合成到唱片中,创造一种身临其境的感觉。代码如下:
%%导入声音
My = audioread('my.wav'); %自己录制的音频
music = audioread('music.wav'); %其他音频
%%Conv
mix = conv(My,music); %%先看数据的格式,若都为两列数据,需要两列分别做卷积
%%两列分别做卷积程序
%%mix(:,1) = conv(music(:,1), My(:,1));
%%mix(:,2) = conv(music(:,2), My(:,2))
%%
%%听
sound(mix,44100); %%44100为采样频率,根据自己的录音来
结果可以反馈在评论区喔!