Je rencontre un problème lors de la mise à jour d'une barre d'attente dans une interface graphique MATLAB.La mise à jour de la barre d'attente MATLAB échoue après la première mise à jour
J'ai créé un exemple simple qui fonctionne comme prévu.
steps = 5;
hWaitBar = waitbar(0, 'Testing...');
for i = 1:steps
waitbar(i/steps, hWaitBar);
pause(1);
end
close(hWaitBar);
Cependant quand j'utilise cette construction dans l'interface graphique ...
numSteps = %calculated
hWaitBar = waitbar(0, 'Processing...');
if %conditional
for i = 1:numSteps
waitbar(i/numSteps, hWaitBar)
% additional processing
end
else %conditional
% additional processing
end
close(hWaitBar);
... le waitbar affiche correctement que pour la première pour l'itération de la boucle.
La deuxième itération échoue avec le Execption:
Error using waitbar(109)
Improper arguments for waitbar.
- j'ai vérifié que la valeur de progression de waitbar ne dépasse pas 1.
- j'ai vérifié que le waitbar ne soit pas fermé jusqu'à ce que l'extérieur de la if/else boucle.
Quelle est votre valeur de départ de 'numSteps'? (Ce n'est pas inclus dans votre exemple.) Y a-t-il quelque chose dans votre bloc de code «traitement supplémentaire» qui modifie «i», «numSteps» ou «hWaitBar»? Avez-vous un exemple de travail minimal qui produit l'erreur? – blafrat
Pour mes tests, numSteps = 2. Il n'y a rien dans mes blocs de traitement qui modifie i, numSteps ou hWaitBar. Votre suggestion de produire un exemple de travail minimal m'a conduit à décommenter sélectivement les lignes jusqu'à ce que je trouve celui qui a créé l'erreur. C'est un appel à imagesc. – Noren