How to skip every second file in directory for for loop
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Stephen23
le 28 Avr 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);
Réponses (1)
Louise Wilson
le 28 Avr 2020
3 commentaires
Benjamin Colbert
le 24 Août 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
le 24 Août 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.
Voir également
Catégories
En savoir plus sur Search Path dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!