Код Matlab для применения преобразования к каждому файлу в папке - PullRequest
0 голосов
/ 18 сентября 2019

У меня есть следующий фрагмент для преобразования ввода .wav в вывод ascii .txt.Как я могу изменить этот код, чтобы преобразовать каждый файл .wav в данном каталоге, а затем вывести каждый файл .txt в соответствии с именами входных файлов, каждое из которых уникально?

[data, fs] = audioread('waves/sampleInput.wav');
save 'sampleOutput.txt' data -ASCII

1 Ответ

3 голосов
/ 18 сентября 2019

Ключ к такому вопросу - команда dir .Вы можете попытаться использовать его в такой конструкции:

dir_in = 'myfolder'; % set directory

filelist = dir(fullfile(dir_in, '*.wav')); % get file list

for i = 1 : length(filelist); % iterate over files in dir
    filename = filelist(i).name;
    disp(['Processing ' num2str(i) '/' num2str(length(filelist)) ': ' filename])
    [data, fs] = audioread(fullfile(dir_in,filename)); % Do your stuff for every file
    save(['sampleOutput_' filename(1:end-4) '.txt'],'data','-ascii') % add filename to output filename, but without '.wav'
end

Выход будет в текущем рабочем каталоге, я считаю.

Примечание: Я думаю, что этоХорошей практикой является использование fullfile для построения ваших путей, поскольку при этом автоматически выбирается правильный символ разделителя файлов (Windows: \ против UNIX: /), что означает, что этот код переносим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...