gpt4 book ai didi

arrays - 在Matlab数组中找到模式开始的索引

转载 作者:行者123 更新时间:2023-12-03 02:15:48 24 4
gpt4 key购买 nike

我是Matlab的新手,正在尝试执行一些基本功能。我有一个很小的声音文件,可以通过PC扬声器播放,另一个声音文件包含录制的音频,其中包含我播放第一个音频文件的时间。将每个文件作为数组加载到Matlab中之后,我在两个文件上使用了xcorr并将值存储为c。我想做的是获取c数组中的索引,该索引与播放小声音文件的粗略时间相对应。这是我的代码。

[tone,fs] = audioread('Tone1.wav');
[recording,fs] = audioread('recording1.wav');
c = xcorr(tone, recording);

上面是c的图。我觉得在此模式开始的数组c中找到索引应该很简单,但是我不知道语法。提前致谢。

最佳答案

该位置由最大互相关确定。但是,使用xcorr进行操作可能很棘手,因为根据其doc,最短信号(tone)将被补零,因此其长度将被更改。

我建议您使用conv(卷积)而不是xcorr。如果您对tone进行时间反转,则卷积的结果是相同的,并且使用conv的优势在于它接受valid选项(请参见其doc),从而避免了零填充,从而使您可以直接读取其时间位置最大。

例:

>> tone = sin(2*pi*linspace(1,8,1000));
>> recording = [zeros(1,1e4) tone zeros(1,5e4) ];

>> c = conv(recording, tone(end:-1:1), 'valid');
>> [~, pos] = max(c)

pos =

10001

关于arrays - 在Matlab数组中找到模式开始的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182714/

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