кнопка для изменения переменной - PullRequest
1 голос
/ 31 января 2012

Полагаю, это очень простой вопрос, но я трачу больше времени на поиск ответа, чем если бы я спросил здесь

Я сделал 3 кнопки, когда я нажимаю на них, необходимо изменить переменную, например:

[Button1] when pressed: bp = sys
[Button2] when pressed: bp = mean
[Button3] when pressed: bp = dia

Это то, что у меня есть, я скопировал код с кнопки, которая возобновляет работу сценария. Что мне нужно настроить, чтобы соответствовать моим потребностям?

kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback','uiresume( gcbf )' );
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback','uiresume( gcbf )' );
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback','uiresume( gcbf )' );

Заранее спасибо

Ответы [ 2 ]

4 голосов
/ 31 января 2012

вот так:

global bp;

figure
kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback', {@fun, 'sys'});
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback', {@fun, 'mean'});
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback', {@fun, 'dia'});
kiesdia = uicontrol( 'Position', [10 140 200 30],'String','Output current value','Callback', 'disp(bp)');

и сохранить функцию обратного вызова fun до fun.m:

function fun(~, ~, value)
    global bp;
    bp = value;
end
0 голосов
/ 01 февраля 2012

Ответ Александру хороший, однако вы можете сделать это, не используя функцию «веселья». Просто введите в строку «callback» команды, т.е.

kiessys = uicontrol( 'Position', [10 35 60 30],'String','Sys(R)','Callback', 'bp = sys;');
kiesmean = uicontrol( 'Position', [10 70 60 30],'String','Mean(B)','Callback','bp = mean;');
kiesdia = uicontrol( 'Position', [10 105 60 30],'String','Dia(G)','Callback', 'bp = dia;');

Команды будут выполняться в «базовом» рабочем пространстве, а переменные будут видны любому сценарию. Таким образом, вам не нужно объявлять их как global , что, как правило, не очень хорошая практика.

Примечание по созданию графического интерфейса в Matlab. Хорошей практикой (лучше всего на самом деле) является использование GUIDE для создания графического интерфейса, а не использования команд, поскольку это значительно упрощает работу и намного ускоряет разработку (просто учтите, что вам нужно создать 10 кнопок, 2 оси и т. Д. С помощью команд). . Размещение их в одиночестве - это кошмар).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...