MATLAB Answers

how to run my conversion program using loops

조회 수: 1(최근 30일)
Mustapha Messaoud
Mustapha Messaoud 29 Jun 2019
Edited: Rik 30 Jun 2019
I have a program of resampling and conversion wav to pcm
so I have a main folder that contains several subfolders
and each subfolder contains a wav file and a text file
I want to run my program on all wav files in all subfolders, I can not do it,Thank you very much for your help.
here is my program:
[x, fs] = audioread(a_filename);
% resample:
fsin = fs;
fsout = 22050;
m = lcm(fsin,fsout);
up = m/fsin;
down = m/fsout;
x_22 = resample(x, up, down);
audiowrite([a_filename,'_22050','.wav'], x_22, fsout);
% convert to PCM 16 bit
precision = 'int16';
fidr = fopen([a_filename(1:11), '_22050','.wav'], 'r'); % open .wav file to read
fidw = fopen([a_filename(1:11), '_22050','.pcm'], 'wb'); % open .pcm file to write
w = int16(fread(fidr, inf, precision));% read .wav file
fwrite(fidw, w, precision); % write .pcm file
thank you in advance

  댓글 수: 0

로그인 to comment.

답변 수 (1)

per isakson
per isakson 29 Jun 2019
per isakson 님이 편집함. 29 Jun 2019
Try this
main_folder = 'c:\whatever\mainfolder';
sad = dir( fullfile( main_folder, '**', '*.wav' );
sad = reshape( sad, 1,[] );
for wav = sad
ffs = fullfile( wav.folder, );
disp( ffs )
If recursive dir call, "**", is not avaiable in your Matlab release try Recursive directory listing - Enhanced RDIR . (There are several rdir() in the File Exchange.)

  댓글 수: 3

Rik 29 Jun 2019
Just to confirm: the ** syntax was not available in the R2014a dir function.
per isakson
per isakson 30 Jun 2019
Recursive directory listing by Gus Brown is "Created with R2007a, Compatible with any release". I've used it for a long time and cannot remember it having caused me any problem.
Rik 30 Jun 2019
I just meant you do indeed need to use such a function, instead of using built-in Matlab tools. I'll edit the comment to make it more clear.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.




Translated by