如何解决交互式八度图中的多个滑块
我正在尝试创建一个 GUI,其中可以使用滑块修改多个变量。到目前为止,这是我的示例:我试图通过对两个滑块求和来改变线性函数的梯度。
我对八度和 matlab 的 gui 完全陌生,所以我认为存在一些基本错误。
%%%%%% In file myplot.m %%%%%
function myplot
%% Create initial figure and spiral plot
figure;
axes ('position',[0.1,0.3,0.8,0.6]);
global t;
t = linspace (0,100,101)
x = t;
y = t;
plot (x,y);
axis ([-100,-100,100]);
%% Add ui 'slider' element
hslider = uicontrol ( ...
'style','slider',...
'Units','normalized',...
'position',0.1,0.1],...
'min',...
'max',...
'value',...
'callback',{@plotstuff} ...
);
%% Add ui 'slider' element
kslider = uicontrol ( ...
'style',{@plotstuff} ...
);
end
%% Callback function called by slider event
%% Also in file myplot.m (i.e. a subfunction)
function plotstuff (h,k,event)
global t;
n = get (h,'value');
m = get (k,'value');
x = t;
y = (n+m) * t ;
plot (x,100]);
end
这是我的错误信息:
㎫ >> 错误:运算符 *:不一致的参数(op1 为 0x0,op2 为 1x101) 错误:从 Octave_test>plotstuff 在第 43 行第 5 列 错误:运算符 *:不一致的参数(op1 为 0x0,op2 为 1x101) 错误:从 Octave_test>第 43 行第 5 列的情节
这是图形窗口:
解决方法
function plotstuff (h,k,event)
这个签名是错误的。回调函数的第一个参数是滑块对象的句柄。第二个参数是事件。没有第三个论点。这是正确的形式:
function plotstuff(h,event)
在此回调中,h
等于 hslider
或 kslider
(uicontrol
返回的数字)。
这里有多种选择。您可以将 hslider
和 kslider
设为全局,就像对 t
所做的那样,并使用它们来获取回调中的滑块值:
%% in myplot
global hslider kslider
...
%% in plotstuff
global hslider kslider
...
n = get (hslider,'value');
m = get (kslider,'value');
如果不想使用全局变量,可以将两个句柄作为附加参数传递给回调:
%% in myplot
hslider = uicontrol(...)
kslider = uicontrol(...)
set(hslider,'callback',{@plotstuff,hslider,kslider})
set(kslider,kslider})
然后您可以在 plotstuff
中使用这些参数:
function plotstuff (handle,event,kslider)
n = get(hslider,'value');
m = get(kslider,'value');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。