2017-12-08 22 views
0

필자는 scilab에서 간단한 GUI를 만들기 위해 슬라이더가 "a"값을 구동하는 함수 a'sin (x)의 그래프를 표시하려고합니다. 나는 "a"의 현재 값에 해당하는 커브 만 표시하는 방법을 찾지 않는 것 같습니다 ... 기존 커브에 새 커브를 추가하기 만하면됩니다. 나는이 순간에 더 이상 얻을 수없는 간단한 해결책이 있기를 바란다 (나는 단지 Mathematica에 대한 약간의 경험이있다). 내가 사용하는 매우 간단한 코드는 다음과 같습니다.Scilab - gui - axes auto_clean 슬라이더를 조정하는 동안 그래프를 ...?

// This GUI file is generated by guibuilder version 3.0 
////////// 
f=figure('figure_position',[400,50],'figure_size', 
[656,581],'auto_resize','on','background',[33],'figure_name','Graphic 
window number %d'); 
////////// 
delmenu(f.figure_id,gettext('File')) 
delmenu(f.figure_id,gettext('?')) 
delmenu(f.figure_id,gettext('Tools')) 
toolbar(f.figure_id,'off') 
handles.dummy = 0; 
handles.slider=uicontrol(f,'unit','normalized','BackgroundColor', 
[-1,-1,-1],'Enable','on','FontAngle','normal','FontName','Tahoma', 
'FontSize',[12],'FontUnits','points','FontWeight','normal', 
'ForegroundColor',[-1,-1,-1],'HorizontalAlignment','left','ListboxTop', 
[],'Max',[1],'Min',[0],'Position',[0.0359375,0.78125,0.2625,0.09375], 
'Relief','default','SliderStep', 
[0.01,0.1],'String','slider1','Style','slider','Value', 
[0],'VerticalAlignment','middle','Visible','on','Tag','slider', 
'Callback','slider_callback(handles)') 
handles.graph= newaxes();handles.graph.margins = [ 0 0 0 
0];handles.graph.axes_bounds = [0.31875,0.01875,0.6640625,0.925]; 

////////// 
// Callbacks are defined as below. Please do not delete the comments as 
it will be used in coming version 
////////// 

function slider_callback(handles) 
//Write your callback for slider here 
x=0:0.1:10; 
a=handles.slider.Value; 
plot(x,a*sin(x)); 
endfunction 

감사합니다.

답변

1

기본적으로 각 그래픽 명령은 결과를 현재 디스플레이에 추가합니다. 새 그래픽 명령이 표시되기 전에 그림을 자동으로 지우려면 축의 자동 제거 등록 정보를 "on"으로 설정할 수 있습니다. 다른 해결책은 삭제 기능을 사용하여 이전 도면을 지우는 것입니다.

당신이 눈금을하지 않으려면

당신이 대답을 플롯 기능을 대신

// This GUI file is generated by guibuilder version 3.0 
////////// 
f=figure('figure_position',[400,50],'figure_size',... 
[656,581],'auto_resize','on','background',[33],'figure_name','Graphic window number %d'); 
////////// 
delmenu(f.figure_id,gettext('File')) 
delmenu(f.figure_id,gettext('?')) 
delmenu(f.figure_id,gettext('Tools')) 
toolbar(f.figure_id,'off') 
handles.dummy = 0; 
handles.slider=uicontrol(f,'unit','normalized','BackgroundColor',... 
[-1,-1,-1],'Enable','on','FontAngle','normal','FontName','Tahoma',... 
'FontSize',[12],'FontUnits','points','FontWeight','normal',... 
'ForegroundColor',[-1,-1,-1],'HorizontalAlignment','left','ListboxTop',... 
[],'Max',[1],'Min',[0],'Position',[0.0359375,0.78125,0.2625,0.09375],... 
'Relief','default','SliderStep',... 
[0.01,0.1],'String','slider1','Style','slider','Value',... 
[0],'VerticalAlignment','middle','Visible','on','Tag','slider',... 
'Callback','slider_callback(handles)') 
handles.graph= newaxes(); 
handles.graph.margins = [ 0 0 0 0]; 
handles.graph.axes_bounds = [0.31875,0.01875,0.6640625,0.925]; 
handles.graph.data_bounds=[0 -1.2;10 1.2]; 
handles.graph.auto_clear="on"; 
////////// 
// Callbacks are defined as below. Please do not delete the comments as 
//it will be used in coming version 
////////// 

function slider_callback(handles) 
//Write your callback for slider here 
x=0:0.1:10; 
a=handles.slider.Value; 
drawlater() 
//delete(handles.graph.children) 
xpoly(x,a*sin(x)) 
handles.graph.data_bounds=[0 -1.2;10 1.2]; 
drawnow 
//plot(x,a*sin(x)); 
endfunction 
+0

감사를 xpoly 기능을 사용할 수 있습니다 표시 할, 그것을 작동합니다. 또한 x와 y 축을 xpoly를 사용하여 어떻게 보이게 할 수 있습니까? 나는 auto_clear = on으로 plot() 함수를 유지하고 슬라이더를 2-3 번 움직이면 "! - error 999 set : 핸들이 유효하지 않음"오류가 발생합니다. ... 나는 왜 그런지 이해하지 못한다 ... – Conrad