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

Кажется, есть проблема, содержащаяся в 'save', которая не позволяет этой программе правильно выполнять итерации по каждому файлу и создавать выходные данные.

Цель состоит в том, чтобы взять папку, полную файлов .wav, и преобразовать ихвсе в .dat или ascii .txt ...

Есть идеи?

dir_in = '/waves'; % 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

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

«Форма команды» функций Matlab с использованием пробелов и без скобок (т. Е. save filename.mat var1 var2) весьма ограничена.Если вы используете динамические имена файлов или переменные в качестве имен файлов, вам необходимо использовать обычный синтаксис вызова функций: save(['sampleOutput_' filename(1:end-4) '.txt'],'data','-ASCII').

0 голосов
/ 19 сентября 2019

Во-первых, приведенный выше ответ верен в отношении ограничений «формы команд» функций matlab.В этом случае вам, вероятно, следует избегать этого.Во-вторых, функция сохранения в Matlab предназначена для сохранения файлов .mat, которые будут содержать переменные и структуры.По моему опыту, это не полезно для сохранения текстовых файлов, содержащих данные.Я бы, вероятно, заменил эту строку чем-то вроде:

writematrix (data, strrep (filename, '.wav', '.txt'));

Если вы хотите, чтобы он был разделен табуляцией(по умолчанию это разделитель запятыми), вы можете попробовать:

writematrix (data, ['sampleOutput_' strrep (filename, '.wav', '.txt')], 'Delimiter', 'tab');

Обновление: очевидно, вы можете использовать функцию «сохранить» таким образом!У меня не было идей.Спасибо!

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