在MATLAB中录制音频信号时可以执行功能吗?

时间:2012-05-09 14:14:24

标签: multithreading matlab

我想在录制信号期间获得音频数据帧的音高。 (没有停止录制) 首先,我执行了以下代码。

r = audiorecorder(fs,16,1);
while 1
   recordblocking(r,T);  % T is frame length [s]   (A)
   sample{k} = getaudiodata(r);   
   pitch{k} = get_pitch(sample{k});     % (B)
end

然而,执行get_pitch函数期间的记录过程停止,并且它会导致 缺少部分音乐信号要记录。

我希望样本记录不间断地执行,但是将长度为T [s]的数据发送到函数get_pitch,以便连续获得所有帧的音高。

有没有人可以给我一些建议?我非常感谢你的所有评论。

1 个答案:

答案 0 :(得分:0)

通常,如果您使用的是Matlab,并且需要多线程,那么您唯一的希望就是并行计算工具箱。 你在这里有一个典型的consumer/producer scenario - 试着去谷歌。

然而,您的方法的问题不一定是缺乏线程。如果get_pitch命令足够快,你就没有问题。您也可以保存所有样本并在之后进行分析(如果它适合应用程序)。