在matlab中产生超声波

信息处理 matlab 声音的 沥青
2022-01-29 12:25:36

我正在为我的班级项目制作动物驱虫剂,我需要知道如何获取普通音频文件并将其频率/音高调高以使其成为超声波。

2个回答

要回答“如何将音频信号的频率上移”位:

  • 您可以将信号乘以高频的正弦波。这会将原始信号的整个频谱移动并镜像到高频(在时域中乘以正弦=在频域中由一对对称狄拉克进行卷积) - 然后可以通过高通去除镜像过滤。限制:这不会保留谐波之间的整数比。例如,如果偏移 1kHz,100、200 和 300 Hz 分音的谐波混合将在 1100、1200 和 1300 Hz 有分音 - 并且谐波之间的整数比丢失,从而使生成的音频信号“金属”或“不和谐” ”——至少符合人类听觉的感知标准!
  • 您可以简单地以更高的采样率回放原始数据。限制:乘以采样率也会减少原始数据的持续时间。
  • 实际的音乐音高变换是通过相位声码器(短期傅立叶变换)等技术完成的。

但是,您可能不需要使用这些方法中的任何一种,因为:

  • 无需转换现有音频信号 - 鉴于原始信号的内容相关性很小,并且会因转置过程以一种或另一种方式劣化,为什么不直接以所需频率生成音调以开始和?
  • 请记住,无论您做什么,计算机附带的转换器和换能器都无法再现超声波(它们在人类听觉范围的上限处有一个截止频率,大约 20kHz)。
  • 超声波对蚊子有驱避作用的证据非常浅薄

频移f0可以通过幅度调制来实现,该幅度调制涉及将输入信号相乘x(t)有承运人cos(2πf0t), IE

y(t)=x(t)cos(2πf0t)
当在离散域(例如在 Matlab 中)实现这一点时,采样频率fs,in通常必须增加输入信号的值。认为x(t)截止频率(别名带宽)为fc. 然后频移信号y(t)截止频率为fc+f0. 因此,采样频率fs,outy(t)必须履行fs,out2(fc+f0)(抽样定理)。

我建议按照以下步骤在 Matlab 中实现它(n是离散时间):

  • 创建上采样版本x~n输入序列的xn, 使其采样频率fs,out满足上述条件。使用 Matlab 函数upsample如果你不知道fc认为fc=fs,in/2.
  • 创建离散时间载波信号cos(2πF0n)F0=f0/fs,out. 它的长度必须与x~n.
  • 计算yn=xncos(2πF0n).