2015-07-29 3 views
-3

Я хочу прочитать wav-файл 80 МБ в MATLAB. Я попробовал wavread и audioread функции, но я не мог его прочитать. Я разделил wav-файл, когда читал wavread (файл, [startpos endpos]). Но в 50. итерации программа сломалась. Я не смог полностью прочитать файл. Он работает для wavread (файл, [1 500000]), но не работает wavread (файл, [50000000 50500000]);Чтение больших wav-файлов большого размера в MATLAB

В меню импорта я могу импортировать 30 МБ WAV-файла напрямую, но когда я пытаюсь читать шаг за шагом с циклом for, он был сломан.

Я изменил память Java Heap до 560 МБ от настроек.

Я жду ваших рекомендаций. Благодарю.

%% 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 
+0

какое сообщение об ошибке вы получаете? –

+0

Ошибка при использовании wavread (строка 165) Неверный файл волны. Причина: пределы выборки вне диапазона. – yilmaz

+1

опубликовать [минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) –

ответ

1

Вы счетные L неправильно. Это число байтов, но не количество выборок. Типичный аудиофайл имеет более 8 бит/образец. Кроме того, размер файла включает информацию заголовка.

Использование audioinfo получить L

+0

Спасибо. Я написал псевдокод. Но моя проблема в том, что я не мог читать wav-файл 80 МБ в MATLAB в любом случае. – yilmaz

+0

Пожалуйста, объясните вашу проблему таким образом, чтобы мы могли ее воспроизвести. Миз. уже дал вам руководство, как описывать такие проблемы. – Daniel

+0

Удивительно, что я могу читать данные из раздела «Импорт данных», даже если размер 80 МБ. Я ничего не изменил. Я попробовал auidoread/wavread (имя файла). Он читает оба. Спасибо за вашу помощь. Может быть, мой псевдокод служит кому-то помочь. – yilmaz

Смежные вопросы