# MATLAB: How to change a function input with each loop iteration

characterfilenamefor loopfunctioniteration

Hello,
Here's my issue. I have a folder containing 2435 files of the type '.aqa' (from an acoustic backscatter sensor). I have a function called ReadAquaScat1000.m which converts these files to .mat, which I can then work with further. I do not want to manually run the function 2435 times to convert these files, and so have tried writing a for loop. However, I am not sure how to do this because the function input must be the filename in single quotes, not including the .aqa extension, and I'm not sure how to assign a different filename with each loop iteration. My code is below. Thank you for any help you can provide!
%converts raw ABS .aqa files into .mat files that can be organized%using ABSall.m%first, navigate to directory containing .aqa filesfilenames=dir('*.aqa');filenames=struct2cell(filenames);filenames=char(filenames(1,:)); %character array of filenamesfilenames2=char(zeros(2435,14)); %preallocate array for filenames w/o .aqa extensionnumbursts=length(filenames);for i = 1:numbursts; %for each burst    [~,filenames2(i,:),~]=fileparts(filenames(i,:)); %create array of filenames w/o .aqa extension    file = char(filenames2(i,:)); %single filename, to be function input    ReadAquaScat1000('file','SINGLE') %convert fileend

#### Best Answer

• You are making your code far too complicated for such a simple task. Keep it simple, something like this should work:
S = dir('*.aqa');for k = 1:numel(S)    [~,file] = fileparts(S(k).name);    ReadAquaScat1000(file,'SINGLE');end
And if you really want a list with all filenames, it is easy to put them into one cell array:
 names = {S.name};
Also note that it is probably simpler to pass the path as well, rather than navigate to the directory and change the current directory:
D = '.'; % path stringS = dir(fullfile(D,'*.aqa'));for k = 1:numel(S)    [~,file] = fileparts(S(k).name    P = fullfile(D,file);    ReadAquaScat1000(P,'SINGLE');end