matlab 项目 - 音频频率

这篇博客介绍了一个MATLAB项目,涉及音频信号C和弦的处理。任务包括计算音频采样时间、绘制信号波形、进行傅里叶变换以获取频谱信息,并进一步计算和显示频率向量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

任务

加载文件 Cchord.mat。

创建一个名为 n 的变量,表示 y 中的元素数目。然后使用 n 创建等间距向量 t,该向量以 0 开头,以 n-1 结尾,元素之间的间距为 1。

Task 1

load Cchord.mat;
n = numel(y);
t = 0:n-1;

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

任务

将 t 除以 fs。将输出赋给同一个变量 t。然后绘制 y 对 t 的图。

Task 2

t = t / fs;
plot(t,y)

在绘图中,请注意 y 是周期性的,但它不是简单的正弦波。它由具有不同频率的多个正弦波组成。

傅里叶变换将返回信号的频谱信息。主频的位置将显示和弦中包含的音符。

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

fft(y)

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

任务

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

Task 3

yfft = abs(fft(y))

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

任务

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

Task 4

f = 0:n-1

向量 f 现在包含 n 个点。要将这些点转换为频率,您可以将整个向量乘以采样频率 (fs),然后除以点数 (n)。

f 将包含从 0 到 fs 的频率。主频位于 f 的开头位置。您可以使用 xlim 函数放大所关注的区域。

xlim([xmin xmax])

任务

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

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

Task 5

f = f*fs/n;
plot(f,yfft);
xlim([0 1000])

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值