我正在研究大鼠的超声波发声(它们在超声波中的声音)。我有几个老鼠演讲的音频wav文件。理想情况下,我会将整个文件导入matlab,并只处理它,但我会得到内存问题,即使最小的70mb文件。这就是我需要帮助的地方。
[y,fs,nbits]=audioread('t000201.wav');
[s f t]=光谱图(y,100,[],256,fs,'yaxis')。。程序的其余部分
我可以考虑将音频(在一个文件中)分成块,并在考虑下一个块之前处理该块,但我不确定如果rat呼叫在块的一半被切断(这可能会对stft频谱图产生负面影响),我会怎么做。
我遇到了另一种称为“mapreduce”的技术,它似乎允许我在不实际读取数据的情况下使用全部数据。虽然这似乎是最理想的,但我不太明白它是如何工作的,或者是如何实现的。”hadoop”也被提到。有人能提供帮助吗?
我现在正在用这个(http://uk.mathworks.com/help/matlab/import_export/find-maximum-value-with-mapreduce.html)供参考。我的第一步是尝试使用wav文件作为数据存储(如示例中的csv文件),但没有成功。
1条答案
按热度按时间fnatzsnv1#
由于您主要使用的是音频(.wav)文件存储库,因此mapreduce可能不是最佳选择。datastore函数只适用于文本文件或键值文件。
使用内存函数来探索matlab的内存限制,并尝试以较小的块处理音频文件。使用audioread()、audioinfo()和audiowrite()的组合,您可以将音频文件的集合分解为一个较大的较小文件集合,然后可以单独处理这些文件。
如果有少量文件要处理,则可以手动检查较小的块,以确保块之间没有重要的rat调用被切断。当然,如果你有成千上万的文件要处理,那么这种方法是不可行的。