2016-01-29 85 views
0

我对此非常沮丧,因为我在网上找到的每种方法都不适用于我。有些只能显示str而不传递变量。例如。matlab中的连续滑块

h = uicontrol('style','slider','callback',@(src,evt)disp(get(src,'value'))); 
addlistener(h,'Value','PreSet',@(~,~)disp('hi')); 

如果我用我的回调取代了disp函数,我得到错误说没有'Value'属性。这里是我的代码

zeta = .5;       % Damping Ratio 
wn = 2;        % Natural Frequency 
sys = tf(wn^2,[1,2*zeta*wn,wn^2]); 
f = figure; 
ax = axes('Parent',f,'position',[0.13 0.39 0.77 0.54]); 
h = stepplot(ax,sys); 
setoptions(h,'XLim',[0,10],'YLim',[0,2]); 
b = uicontrol('Parent',f,'Style','slider','Position',[81,54,419,23],... 
       'value',zeta, 'min',0, 'max',1,'callback',@(s,e)updateSystem(h,tf(wn^2,[1,2*s.Value*wn,wn^2]))); 
addlistener(b,'Value','PostSet',@(s,e)updateSystem(h,tf(wn^2,[1,2*s.Value*wn,wn^2]))) 

“没有合适的方法,属性或字段‘值’上课‘matlab.graphics.internal.GraphicsMetaProperty’。”

在其他示例中,有'ContinuousValueChange','ActionEvents',它根本不起作用。

任何人都可以给我一个简单的例子,其中滑块给它的值连续输出?

由于

回答

0

在监听行的变量s是监听器对象不是uicontrol变量(B)。

更新您简单的例子,那就是:

figure; 
h = uicontrol('style','slider','callback',@(src,evt)disp(get(src,'value'))); 
addlistener(h,'Value','PreSet',@(~,~)disp(h.Value));