How to skip every second file in directory for for loop
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have a folder of .wav files which I am cutting to a shorter length and then re-writing. I would like to do this for every second file in the directory.
How can I adapt my code to do this?
direcName = 'H:\SoundTrap\wav\New folder\*.wav'; %folder
directory = dir(direcName); %all files in folder
[pathstr,name,ext] = fileparts(direcName);
for i=1:length(directory)
usefile = directory(i).name;
fileName = strcat(pathstr,'\',usefile);
[y, Fs] = audioread(fileName,[1 2]);
startpos = 4 * Fs; %start position in seconds
endpos = 119 * Fs; %end position in seconds
% Store edited version
[ynew, Fs] = audioread(fileName, [startpos endpos]); %read in section of file
% Write new file
[pathstr,name,ext] = fileparts(fileName);
folder='H:\SoundTrap\wav\New folder\Cut files';
outFileName = strcat(folder, '\', name, '.cut',ext);
audiowrite(outFileName, ynew, Fs);
end
3 comentarios
Stephen23
el 28 de Abr. de 2020
You can improve the code by using fullfile rather than concatenating strings, e.g. replace this:
fileName = strcat(pathstr,'\',usefile);
with
fileName = fullfile(pathstr,usefile);
Respuestas (1)
Louise Wilson
el 28 de Abr. de 2020
3 comentarios
Benjamin Colbert
el 24 de Ag. de 2022
To modify this to skip 23 files (e.g., read one file per day), would you simply change for i=1:2:length(directory) to for i=1:24:length(directory)
Louise Wilson
el 24 de Ag. de 2022
Yes, that will select every 24th item of i. Run the first couple of iterations and check it's selecting what you think it is/want it to. It will only work to select one file per day if you have 24 files per day.
Ver también
Categorías
Más información sobre Search Path en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!