How can I implement recursion in code-generated Simulink models?
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I am wanting to implement a recursive function call inside a "MATLAB Function" block in my Simulink model. However, it fails when I want to run in Rapid-Accelerator mode because recursive function calls are not allowed/supported in code-generation.
You can think of the function I am calling as listing a directory's content which should obviously recurse into child directories if there are any. The method being called is not implemented in the block itself but in an m-file on my userpath.
Is there a way to facilitate using recursive function calls inside a "MATLAB Function" block or do I have to design the block differently?
0 comentarios
Respuestas (2)
Andrew Schenk
el 15 de Jun. de 2015
Editada: Andrew Schenk
el 15 de Jun. de 2015
As you are aware, recursion is not supported for Simulink Code Generation. An alternative algorithm design for this recursive directory list would be to use a while loop with a dynamic list of directories. An example is shown below, but note that this example needs some modifications to support code generation since Cell Arrays are not supported.
%the initial directory
directories = {'./'};
while numel(directories) > 0
%the current directory
currentDir = directories{end};
%the current directory listing
listing = dir(currentDir);
%remove the current directory listing
directories(end) = [];
for i=1:numel(listing)
if strcmp(listing(i).name, '.') || strcmp(listing(i).name, '..')
%don't add the . or .. to the list
continue;
end
disp(fullfile(currentDir, listing(i).name));
if listing(i).isdir
directories{end+1} = fullfile(currentDir, listing(i).name);
end
end
end
0 comentarios
Ver también
Categorías
Más información sobre Simulink Coder en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!