Effacer les filtres
Effacer les filtres

How to make for loop ?

2 vues (au cours des 30 derniers jours)
Negar
Negar le 22 Oct 2013
Commenté : sixwwwwww le 22 Oct 2013
Hello everyone,
I have a folder (database) containing some wav files , and I want to read each of them to extract some features later. I know how to read each file from the list by wavread, for example the first one would be: [signal,Fs,nbits,opts] = wavread('database/ae/ae_0a01.wav') And the second one: [signal,Fs,nbits,opts] = wavread('database/ae/ae_0a02.wav') and so on. But I can not figure out how to make loop in order to automatically get them loaded one by one. Could anybody help in that case?
Thanks
  1 commentaire
Negar
Negar le 22 Oct 2013
Oh, forgot to say that I have the file list as txt file 'all files.txt' ... So my question is how to pick this files one after the other ... Thank you

Connectez-vous pour commenter.

Réponse acceptée

sixwwwwww
sixwwwwww le 22 Oct 2013
Modifié(e) : sixwwwwww le 22 Oct 2013
Dear Negar, try this:
for j = 1:length(files)
[signal,Fs,nbits,opts] = wavread(strcat('database/ae/ae_0a0', num2str(j), '.wav'));
end
Or better way is using:
dir
to information about all the files in a particular directory and then read them. See http://www.mathworks.de/de/help/matlab/ref/dir.html
In case you have file names stored in text file you can do as follows:
ID = fopen('filename.txt');
files = textscan(ID, '%s');
fclose(ID)
fileNames = files{:};
for j = 1:length(fileNames)
[signal,Fs,nbits,opts] = wavread(fileNames{j});
end
I hope it helps. Good luck!
  2 commentaires
Negar
Negar le 22 Oct 2013
Thank you , but I have a question, in first way,
for j = 1:length(files) [signal,Fs,nbits,opts] = wavread(strcat('database/ae/ae_0a0', num2str(j), '.wav')); end
how to make the file name for file nr.10 and above?
sixwwwwww
sixwwwwww le 22 Oct 2013
In that case you can do like this:
for j = 1:length(files)
if j <10
[signal,Fs,nbits,opts] = wavread(strcat('database/ae/ae_0a0', num2str(j), '.wav'));
else
[signal,Fs,nbits,opts] = wavread(strcat('database/ae/ae_0a', num2str(j), '.wav'));
end
end
Good luck!

Connectez-vous pour commenter.

Plus de réponses (1)

Azzi Abdelmalek
Azzi Abdelmalek le 22 Oct 2013
out=cell(9,4);
for k=1:9
file=sprintf('database/ae/ae_0a0%d.wav')
[signal,Fs,nbits,opts] = wavread(file)
out{k,1}=signal;
out{k,2}=Fs;
out{k,3}=nbits;
out{k,4}=opts;
end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by