У меня есть следующий код MATLAB:
function START_Callback(a,b)
global h;
global lastVal;
global picture1;
global picture2;
global nRep;
global MaxRep;
global index;
global files;
delete(gcf);
nRep = 1;
MaxRep = 529;
files = dir(fullfile('pictures','*.png'));
nFiles = numel(files);
combos = nchoosek(1:nFiles, 2);
index = combos(randperm(size(combos, 1)), :);
picture1 = files(index(nRep,1)).name;
picture2 = files(index(nRep,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',{@NextTrial});
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)
global h
global lastVal;
global picture1;
global picture2;
global fileout;
global SaveResults;
fid = fopen(fileout, 'a');
if get(h, 'Value') ~= lastVal;
lastVal = get(h, 'Value');
if SaveResults > 0;
fprintf(fid, '%s\t%s\t%f\n', picture1, picture2, lastVal);
fclose(fid);
else
fclose(fid);
end
end
Моя проблема в том, как lastVal сохраняется в файле данных.Проблема двоякая:
Если ползунок не перемещен, значение не сохраняется.Таким образом, если он остается в начальной позиции (25) и нажимается «Следующая пробная версия», он игнорирует эту пробную версию, как если бы ее не было.Я не хочу этогоЯ хочу сохранить любое значение положения ползунка независимо от того, был ли он перемещен или нет.
Файл данных выглядит следующим образом:
monkey.png ostrich.png 24.262537
monkey.png ostrich.png 23.082596
monkey.png ostrich.png 20.870207
monkey.png ostrich.png 17.772862
monkey.png ostrich.png 13.790561
monkey.png ostrich.png 9.218289
monkey.png ostrich.png 5.383481
monkey.png ostrich.png 3.023599
monkey.png ostrich.png 2.433628
То есть MATLAB не только сохраняет позицию ПОСЛЕДНЕГО ползунка при его перемещении, но и сохраняет все промежуточные значения.Поэтому я хочу, чтобы вышеприведенное было только:
monkey.png ostrich.png 2.433628
Как получить ТОЛЬКО печать последней позиции ползунка в конце пробной версии (включая значение по умолчанию, если ползунок не перемещен)