信号与系统学习过程中关于信号卷积的matlab实现

信号与系统学习过程中关于信号卷积的matlab实现

关于声音,可以自己用手机录制二个,然后用格式工厂转化为(.wav)格式的文件

第一部分:关于二个声音的卷积

    先贴上代码:

信号与系统学习过程中关于信号卷积的matlab实现

这三行代码就是将三个声音读取进来:

[y,Fs] = audioread(filename)

输出的参数意思为:

                            y是读出数据

                             Fs为音频文件的采样率  

信号与系统学习过程中关于信号卷积的matlab实现

 

这里主要是对输入的信号数据进行处理与可视化,注意这里有一个比较重要的操作就是对于数据的归一化,也就是将所有的幅值参数转化为在0-1范围类的参数,这到后面会用到(note:这里战且不转化好像也可以,到后面一起转化即可)

转化并显示出的如图:

信号与系统学习过程中关于信号卷积的matlab实现

注意这里的纵坐标。

信号与系统学习过程中关于信号卷积的matlab实现

二个disp函数就是记录进程的,可以省略。

conv函数就是这里的重点,依靠这二个函数进行卷积。不过当数据量较大时会比较慢,一开始那首歌三分多钟,卷起来超级慢,后来裁剪了一下,减到一分左右才稍微好点。

注意这里的归一化操作是值得注意的,原因看下面:

因为audiowrite的写入限制,超过范围的数据会被裁减,否则会被裁剪。参见出来的声音难听到让你怀疑人生,你可以尝试,写入函数帮助文档如下图:

信号与系统学习过程中关于信号卷积的matlab实现

adiuowrite(‘被写入的文件名称’,待写入的数据,写入的采样频率)

下图是写入的参数的幅值信息:

信号与系统学习过程中关于信号卷积的matlab实现

 

这的幅值值得注意。