Function that runs all functions in a directory
Mostrar comentarios más antiguos
Hello all,
I want to write a function that loops through all the functions in a given directory and runs them.
For each specific function, I have a variable called FunInputs that tells me what the argument is for each function. For example, the input argument for the function titled 'A' is '930'.
FunInputs=
{'A','930';'B','804';'C','812';'D','830';'E','811';'F','827';'G','931';'H','932';'I','800';'J','814';'K','805';'L','1012';'M','933';'N','820';'O','1010';'P','802';}
In addition, all functions in the directory share the input 'FileCode'. So, when I run function 'A' it looks like:
output = A('FileCode','930');
I'm feeling really lost as to how to go about writing a function that can automatically process my list of functions according to their specific inputs (sorry....I'm a newbie!)
this is what I have so far...
function [AllFunOutputs] = RunAllFuns(FileCode, FunInputs)
files = what('\MATLAB\Funs');
% get all file names in directory 'Funs'
funsExist = files(arrayfun(@(f) isMatFun(f), files));
% make sure the files in the directory are functions
funNames = arrayfun(@(f) {stripDotM(f)}, funsExist);
% strip the '.m' suffix from all file names
% below, match the function name with its argument
k = 1;
for i=1:length(FunInputs)
if(strncmp(FunInputs(i,1),files,1)== 1))
funNames(k,1) = FunInputs(i,2);
k = k+1;
end
end
AllFunOutputs = cellfun(@(f) {executeStrAsFun(char(f), T)}, funNames);
% run the files as functions and combine the results in a matrix
end
function [AllFunOutputs] = executeStrAsFun(fname, FileCode, FunInput)
try
fun = str2func(fname); % convert string to a function
results = fun(FileCode,FunInput); % run the function
catch err
fprintf('Function: %s\n', err.name);
fprintf('Line: %s\n', err.line);
fprintf('Message: %s\n', err.message);
results = ['ERROR: Couldn''t run function: ' fname];
end
end
Thank you so much in advance for your time, help, and consideration!!!!!
1 comentario
Matt Kindig
el 25 de Oct. de 2012
This looks good to me. What doesn't work about this code? Please clarify.
Respuesta aceptada
Más respuestas (0)
Categorías
Más información sobre File Operations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!