在matlab中使用memmapfile读取和表示mp3文件

在matlab中使用memmapfile读取和表示mp3文件,matlab,audio,machine-learning,mp3,large-files,Matlab,Audio,Machine Learning,Mp3,Large Files,我必须用matlab分析生物声学音频文件。最终我希望能够在音频中发现异常。这就是为什么我需要找到一种方法来表示音频的方式,我可以提取和比较功能。我正在处理高达150MB的mp3文件。这些文件太大,matlab无法读入内存。因此,我想使用memmapfile()函数。我使用了下面的代码和一个小的mp3文件来了解它的实际工作原理 [testR, ~] = audioread('test.mp3'); testM = memmapfile('test.mp3'); disp(testM.Data);

我必须用matlab分析生物声学音频文件。最终我希望能够在音频中发现异常。这就是为什么我需要找到一种方法来表示音频的方式,我可以提取和比较功能。我正在处理高达150MB的mp3文件。这些文件太大,matlab无法读入内存。因此,我想使用memmapfile()函数。我使用了下面的代码和一个小的mp3文件来了解它的实际工作原理

[testR, ~] = audioread('test.mp3');
testM = memmapfile('test.mp3');
disp(testM.Data);
disp(testR);   
Data和testR的实际值是不同的。Audioread()返回一个7483391 x 2矩阵,memmapfile()返回一个4113874 x 1矩阵。 我不确定memmapfile()是如何工作的,我希望这两个值相等。有没有一种方法可以读取与audioread()使用memmapfile()相同格式的mp3文件?如果是音频文件,memmapfile实际返回什么?在异常检测的情况下,它也可以用矢量格式吗

提前谢谢


注:原始文件为wav IMA ADPCM格式,大小从1.5 gb到2.5 gb。由于Matlab无法处理这种格式和文件大小,我将它们转换为8位mp3文件

我认为问题在于mammapfile默认读取uint8格式的数据,而audioread函数以另一种方式读取数据。 查看方式使用memmapfile读取数据时可以指定数据的格式,因此请尝试使用不同的值“播放”。根据我的了解,您可以以双格式读取数据,因此请尝试修改memmapfile数据格式和audioread数据格式。
最后一件事,memmapfile总是像“somenumbers x 1”一样组织矩阵中的数据,因此如果您想要原始数据,您需要使用类似于重塑的东西。
无论如何,如果您使用大数据,我建议您尝试使用不同的方法,而不是使用memmapfile,因为它非常非常慢

您是对的,memmapfile不是正确的解决方案。我决定把文件分块读。这很好用!