在 MATLAB 中读取大尺寸 wav 文件
Reading large size wav files in MATLAB
我想在 MATLAB 中读取 80 MB 的 wav 文件。我尝试了 wavread 和 audioread 功能,但我无法阅读。
当我通过 wavread(file, [startpos endpos]) 阅读时,我拆分了 wav 文件。
但在第 50 次迭代中,程序已经崩溃。我无法完全读取文件。它适用于 wavread(file, [1 500000]),但不适用于 wavread(file, [50000000 50500000]);
在导入菜单中,我可以直接导入 30 MB 的 wav 文件,但是当我尝试使用 for 循环逐步读取时,它被破坏了。
我从首选项中将 Java 堆内存更改为 560 MB。
等待您的推荐。谢谢。
%%Mycodes
path = 'asdf\asdf';
ss = dir(path);
L = ss.bytes; % Data length
p = L/100; % I read %1 of data for each step
data = zeros(L,1);
for i = 1 : 100
startpos = (i-1)*p+1;
endpos = i*p;
data(startpos:endpos) = wavread(path, [startpos endpos]);
end
您计算 L
错误。那是字节数,而不是样本数。一个典型的音频文件有 8 个以上 bits/sample。除了文件大小还包括 header 信息。
使用audioinfo
得到L
我想在 MATLAB 中读取 80 MB 的 wav 文件。我尝试了 wavread 和 audioread 功能,但我无法阅读。 当我通过 wavread(file, [startpos endpos]) 阅读时,我拆分了 wav 文件。 但在第 50 次迭代中,程序已经崩溃。我无法完全读取文件。它适用于 wavread(file, [1 500000]),但不适用于 wavread(file, [50000000 50500000]);
在导入菜单中,我可以直接导入 30 MB 的 wav 文件,但是当我尝试使用 for 循环逐步读取时,它被破坏了。
我从首选项中将 Java 堆内存更改为 560 MB。
等待您的推荐。谢谢。
%%Mycodes
path = 'asdf\asdf';
ss = dir(path);
L = ss.bytes; % Data length
p = L/100; % I read %1 of data for each step
data = zeros(L,1);
for i = 1 : 100
startpos = (i-1)*p+1;
endpos = i*p;
data(startpos:endpos) = wavread(path, [startpos endpos]);
end
您计算 L
错误。那是字节数,而不是样本数。一个典型的音频文件有 8 个以上 bits/sample。除了文件大小还包括 header 信息。
使用audioinfo
得到L