按钮改变变量

时间:2012-01-31 11:32:46

标签: matlab button push

我想这是一个非常简单的问题,但我花了更多的时间寻找答案,而不是我在这里问的时候

我制作了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 个答案:

答案 0 :(得分:4)

你去吧:

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

答案 1 :(得分:0)

亚历山大的回答很好,但是你可以不使用“有趣”的功能。只需在命令的“回调”字符串中键入,即

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中创建GUI的说明。使用GUIDE创建gui比使用命令是一个很好的做法(实际上最好),因为它大大简化了事情并且开发速度更快(只考虑你必须使用命令创建10个按钮,2个轴等)。单独定位是一场噩梦。)