J'ai un script ce script Matlab:bouton « essai suivant » dans Matlab
function semjudge
clc;
name = input('Name: ','s');
snum = input('Subject #: ','s');
files = dir(fullfile('pictures','*.png'));
index = randperm(length(files));
picture1 = files(index(1)).name;
picture2 = files(index(2)).name;
image1 = fullfile('pictures',picture1);
image2 = fullfile('pictures',picture2);
subplot(1,2,1); imshow(image1); title(picture1);
subplot(1,2,2); imshow(image2); title(picture2);
uicontrol('Style', 'text',...
'Position', [200 45 200 20],...
'String','How related are these pictures?');
uicontrol('Style', 'text',...
'Position', [50 45 100 20],...
'String','Unrelated');
uicontrol('Style', 'text',...
'Position', [450 45 100 20],...
'String','Closely related');
uicontrol('Style','pushbutton','String','Next Trial',...
'Position', [250 350 100 20],...
'Callback','next');
h = uicontrol(gcf,...
'Style','slider',...
'Min' ,0,'Max',50, ...
'Position',[100 20 400 20], ...
'Value', 25,...
'SliderStep',[0.02 0.1], ...
'BackgroundColor',[0.8,0.8,0.8]);
set(gcf, 'WindowButtonMotionFcn', @cb);
lastVal = get(h, 'Value');
function cb(s,e)
if get(h, 'Value') ~= lastVal
lastVal = get(h, 'Value');
fprintf('Slider value: %f\n', lastVal);
end
end
end
Cela tire deux images aléatoires à partir d'un répertoire sur l'écran, avec une barre de défilement et des instructions pour déterminer le niveau de connexité/similarité entre les deux images avec une position sur la barre de défilement. C'est très bien. Ce que je veux, cependant, est de le régler de sorte que lorsque le bouton "Prochain Essai" est pressé, l'écran se réinitialisera, avec deux NOUVELLES images aléatoires, et la barre de défilement sera de retour au milieu. Comment puis-je faire cela? Je ne trouve aucune instruction sur la façon de le faire en ligne.
Parfait! Je vous remercie. La solution est toujours simple. Je ne connaissais pas la commande clf, et je pensais qu'en appelant une fonction, vous deviez utiliser le symbole "@", alors quand j'essayais d'appeler la fonction, ça ne fonctionnait pas! Merci encore. –
Oui, vous pouvez également utiliser une fonction de rappel via l'opérateur '@'. Si vous le faites, n'appelez pas directement la fonction 'semjudge()' mais appelez une fonction supplémentaire qui utilise 'clf' (ou ferme complètement la fenêtre de la figure) et appelle ensuite' semjudge() ':) – tim