gpt4 book ai didi

matlab - 使用Matlab将超声大鼠调用信号转换为可听范围的建议

转载 作者:行者123 更新时间:2023-12-02 22:33:34 25 4
gpt4 key购买 nike

我正在做一个项目,研究使用Matlab软件和声音文件在超声波范围(20kHz至100kHz)中吱吱作响的老鼠。

我有(或将要得到)这些老鼠说话的几个.wav音频信号,在对这些波形的一般分析中,我还想将这些超声波信号(在我们的听觉范围之外)转换为可听见的范围(20hz)至20khz)。

我可以就如何进行转换获取一些建议(通过Matlab编程而不是通过使用设备)

考虑到这一点,我发现了诸如以下的名称:
分频
-外差
包络检测
时间扩展

但是研究这些似乎是按照设备( bat 探测器)的功能来解释它们,或者听起来彼此非常相似。例如分频和时间扩展都涉及将输入信号除以10

由于我正在研究似乎陌生的草皮,因此找到多种方式转换信号非常好(据我所知,上述名称具有各自相关的积极和消极特征)

最佳答案

您的问题比Matlab问题更是一个信号处理问题,而这并不是Stack Overflow真正要解决的问题,因此您可能会得到一些反对。

实际上,有多种更改音频(或任何信号)频率的方法:

1)放慢速度:对信号的破坏最小的只是降低音频速度。如果您希望获得高达100 kHz的大鼠信号,则需要以200 kHz或更高的频率采样音频。录制后,只需重新保存wav文件,告诉它采样率是44.1 kHz(或其他)。这将使其播放速度更慢,但是现在可以听到所有频率(与下面讨论的单边带解调不同)。这绝对是您应该开始的地方...这是最简单的方法,并且听起来会最好。

fs = 200e3;                    %your original sample rate
myAudio = load('myFile.mat'); %your original audio
fs = 44.1e3; %simply declare that you want a lower sample rate
wavwrite(myAudio,fs,16,'myFile_44kHz.wav'); %save it out at the new rate

2)单边带:使用 demod命令“解调”信号以降低其频率。此命令有多种解调方法可用。我会使用“单边带(被抑制的载波)”,因为那是老鼠本身(和人类)如何发出声音的方式。要进行解调,您必须假设一个“载波频率”,就好像它是一个 radio 信号一样。如果老鼠尖叫声的最低频率为20 kHz,则可以假定载波为20 kHz。此操作会将所有音频下移20 kHz。结果,原来为20-100 kHz的噪声将变为0-80 kHz。因此,您不会听到全部内容,但是会听到部分内容。
fs = 200e3;                    %your original sample rate
myAudio = load('myFile.mat'); %your original audio
[b,a]=butter(2,20e3/(fs/2),'high'); %define highpass filter
myAudio = filtfilt(b,a,myAudio); %remove the low frequencies
myAudio = demod(myAudio,20e3,fs,'amssb'); %shift it down 20 kHz
wavwrite(myAudio,fs,16,'myWave_shifted.wav'); %save it out

3)相位声码器(或其他音调转换):要听到20-100 kHz的整个范围(80 kHz带宽,比人类听力的20 kHz带宽大4倍),方法。这些方法会使音频听起来很奇怪,但是您可以尝试一下。有几种算法。查找“相位声码器”。或者,使用音频处理软件包之一,例如Audacity,Raven等。

关于matlab - 使用Matlab将超声大鼠调用信号转换为可听范围的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com