How to skip every second file in directory for for loop
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
Stephen23
2020-4-28
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);
回答(1 个)
Louise Wilson
2020-4-28
3 个评论
Benjamin Colbert
2022-8-24
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
2022-8-24
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Search Path 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!