Using Matlab apps sequentially in a loop

10 visualizaciones (últimos 30 días)
Jonathan
Jonathan el 29 de Ag. de 2019
Comentada: Josa el 26 de Mzo. de 2020
I'd like to use different Matlab apps in a loop where the loop waits for the application to finish. A specific example would be to review and threshold images in a directory using the imageSegmenter app. Something like:
files = dir('*.bmp');
for f=1:length(files)
im = imread(files(f).name);
BW = [];
imageSegmenter(im);
if ~isempty(BW)
% Save the mask.
end
end
But, if I have 10 images in the directory, that will spawn 10 instances of imageSegmenter. With many images, this is simply impractical.
I've looked at uiwait and waitfor, but these do not work with apps (as best I can tell). Putting pause(0) after the call doesn't help either.
Any help or ideas here would be greatly appreciated. Thanks in advance.
  2 comentarios
Jonathan
Jonathan el 30 de Ag. de 2019
Sorry, I did not use pause(0), that was just typing from memory and meant 'pause'. Yet pause alone, breakpoints, etc nothing allows you to run these things sequentially. Are Matlab apps designed to be essentially autonomous? Why can one not get some handle on them to allow execution of something - i.e., scripts - to wait until completion. It seems a simple thing to require.
Josa
Josa el 26 de Mzo. de 2020
Hi Jonathan, I am facing exactly the same problem, did you manage to segmentate images sequentially?

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 31 de Ag. de 2019
Are Matlab apps designed to be essentially autonomous?
Yes, they create new non-modal GUI figures, and like any other MATLAB figures, they work on callbacks.
Why can one not get some handle on them to allow execution of something - i.e., scripts - to wait until completion.
You can, for some of them, if you know what you are looking for.
set(groot, 'Showhiddenhandles', true);
fig = findobj(groot, 'name', 'Segmentation');
Now you can waitfor(fig) . This does, however, require that you close the app each time
  1 comentario
Jonathan
Jonathan el 3 de Sept. de 2019
Many thanks for this response Walter. This is exactly what I am looking for, but the only issue currently is that this doesn't give the handle to the imageSegmenter. It could be that the name parameter is incorrect.
Matlab technical support are helping me on this one, so I will post the answer if they find a solution.
Again, thanks for the response. Much appreciated.

Iniciar sesión para comentar.

Categorías

Más información sobre Entering Commands en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by