0
点赞
收藏
分享

微信扫一扫

matlab快速入门(18):项目 音频频率

介绍:

 


matlab快速入门(18):项目 音频频率_人工智能


 (1)C 和弦录音存储在一个名为 ​​Cchord.mat​​ 的文件中。此文件包含两个变量:

  • ​y​​:录音信号
  • ​fs​​:采样频率

此任务使用 ​​numel​​ 函数返回数组中的元素数目。


任务:加载文件  ​​Cchord.mat​​。创建一个名为 

​n​​ 的变量,表示 

​y​​ 中的元素数目。然后使用 

​n​​ 创建等间距向量 

​t​​,该向量以 

​0​​ 开头,以 

​n-1​​ 结尾,元素之间的间距为 

​1​​。

matlab快速入门(18):项目 音频频率_人工智能_02


 (2)​​t​​​ 现在有正确的点数,但它需要表示音频信号的采样时间。您可以使用采样频率 ​​fs​​ 将向量转换为时间(以秒为单位)。


任务:将  ​​t​​ 除以 

​fs​​。将输出赋给同一个变量 

​t​​。然后绘制 

​y​​ 对 

​t​​ 的图。

matlab快速入门(18):项目 音频频率_人工智能_03


 (3)在绘图中,请注意 ​​y​​ 是周期性的,但它不是简单的正弦波。它由具有不同频率的多个正弦波组成。傅里叶变换将返回信号的频谱信息。主频的位置将显示和弦中包含的音符。

可以使用 ​​fft​​ 函数来计算向量的离散傅里叶变换。

fft(y)

​fft​​​ 的输出值为复数。您可以使用 ​​abs​​ 函数来获得幅值。


任务: 创建一个名为 ​​yfft​​ 的变量,表示 ​​y​​ 的离散傅里叶变换的绝对值。

matlab快速入门(18):项目 音频频率_java_04


 (4)在任务 1 和 2 中,您已计算了信号 ​​y​​​ 的时间向量 ​​t​​​。同样,您需要为您的 FFT 向量 ​​yfft​​​ 计算频率向量 ​​f​​。


任务: 创建等间距向量 ​​f​​,该向量以 ​​0​​ 开头,以 ​​n-1​​ 结尾,元素之间的间距为 ​​1​​。

matlab快速入门(18):项目 音频频率_人工智能_05


 (5)向量 ​​f​​​ 现在包含 ​​n​​​ 个点。要将这些点转换为频率,您可以将整个向量乘以采样频率 (​​fs​​​),然后除以点数 (​​n​​​)。​​f​​​ 将包含从 ​​0​​​ 到 ​​fs​​​ 的频率。主频位于 ​​f​​​ 的开头位置。您可以使用 ​​xlim​​ 函数放大所关注的区域。

xlim([xmin xmax])


任务: 将 ​​f​​ 乘以 ​​fs/n​​。将输出赋给同一个变量 ​​f​​。

使用 x 的限值 ​​0​​ 和 ​​1000​​ 绘制 ​​yfft​​ 对 ​​f​​ 的图


matlab快速入门(18):项目 音频频率_python_06


举报

相关推荐

0 条评论