Matlab 为什么audioread会产生内存不足错误?

Matlab 为什么audioread会产生内存不足错误?,matlab,Matlab,我想知道的是如何使用另一个函数来代替audioread,或者如何扩展我的可用内存。代码如下: [y,f] = audioread('myfile.wav'); 其中wav文件为60MB。有没有一种方法可以将我的文件解析成一堆较小的文件,并在Matlab中连接它们?还是添加额外的内存 我知道问题在于文件大小,但是否可以读取60MB的文件 尝试函数wavread('name.wav')而不是audioread('name.wav')。但我认为60MB真的太大了。我的wav文件有100KB,我得到了

我想知道的是如何使用另一个函数来代替
audioread
,或者如何扩展我的可用内存。代码如下:

[y,f] = audioread('myfile.wav');
其中wav文件为60MB。有没有一种方法可以将我的文件解析成一堆较小的文件,并在Matlab中连接它们?还是添加额外的内存


我知道问题在于文件大小,但是否可以读取60MB的文件

尝试函数
wavread('name.wav')
而不是
audioread('name.wav')
。但我认为60MB真的太大了。我的wav文件有100KB,我得到了长度为60000的向量(使用
wavread()
)。

问题可能与以下事实有关:wav文件中的每个样本都由8或16位(1或2字节)表示,而Matlab中的标准数字格式是64位浮点a.k.a.
双精度(
(8字节),因此,您需要的内存是文件在磁盘上占用的内存的4到8倍。您可以使用语法指示
wavread
不要使用双值输出,而是使用本机输出

y = wavread('myfile.wav', 'native')
这使得内存大小与磁盘存储大小相同。缺点是在整数数据类型(
int8
int16
)中获得“原始”值,而
wavread
通常将文件中的值范围缩放到[-1,1]


另一方面,在今天的计算机系统中,480MB仍然算不上什么,16GB的主内存已经在较低的范围内。因此,在读取文件时出现内存不足错误是非常奇怪的。尝试关闭其他程序以获得更多可用的主内存,或者尝试使用
clear
clear all
清除Matlab中的其他变量。使用操作系统的内存监视器查看有多少可用内存以及哪些进程占用了这些内存。重新启动操作系统或重新启动Matlab也可能有所帮助。

以下是我得出的结论:


*通过
audioread
功能运行60MB会导致内存不足错误。唯一的解决方法是将音频文件拆分为较小的文件(例如,每个1MB),然后分别处理/读取它们。

我最初将其命名为
wavread
,但它仍然有相同的错误。那么,尝试将文件拆分为许多较小的部分。您可以使用程序Audacity来实现它。我使用了一个较小的代码段,它在我的代码中发现了一个关于ifft2的错误。这是另一个内存不足的错误,所以如果有办法在MATLAB中使用更多内存,我洗耳恭听!您是否将文件分成60个小部分,每个部分100 kB?不,我只是想检查是否可以通过该函数获取任何大小的文件,所以我在6分钟内取出了15秒(大约2.5MB)。我将尝试更小的大小,直到它工作为止,但我更愿意找到一种分配更多内存的方法。我必须尝试将数组截断为int8s。内存错误是因为在Windows7上,MATLAB只分配了2GB的特定于MATLAB的RAM。本,这些答案对你有帮助吗?如果是这样的话,考虑一下投票和/或接受。Rafal指出了我的正确方向,所以我赞扬了他。