回 帖 发 新 帖 刷新版面

主题:MATLAB GUI编程中遇到的棘手问题,请教高手!

我在MATLAB中做了一个 GUI,有两个问题一直解决不了,请各位高手赐教!

我的问题是:
  1 我用了两个axes,要求是:当按'按钮1'时,在axes1里面画图,
        当按'按钮2'时,则在axes2里面画图.
        我在按钮1的回调函数里写了下面语句
          H_axes=findobj('tag','axes1');
          set(H_axes,plot(t,z,r));
    但是结果还是在最后一个axes里画图,也就是在axes2里画图.

      请教:怎么样才能在[color=FF0000]指定的axes[/color]里面画图????

  2 在可编辑文本框edit1和edit2里面分别输入数字,并在输入数字后自动求和,把结果显示在edit3里面
     我用的语句是:(我已经把edit1和edit2的值分别付给X,Y)
        val=X+Y;
        set(handles.edit6,'string');
        set(handles.edit6,'string',num2str(val));
         结果不能实现在edit3里面自动显示X+Y的值。点击一下edit3也不显示,只有在edit3里面随便输入一 个数字之后才显示X+Y的值。

   请教:怎么样才能在edit3里面[color=FF00FF]自动显示结果[/color],而不用再输入任何数字????

回复列表 (共2个回复)

沙发

1  

请用axes函数,比如有两个坐标系axes1  axes2

axes(handles.axes1);
t=1:0.1:2
plot(t,sin(t));
axes(handles.axes2);
plot(t,cos(t));

2

那要看你把程序放在哪里了?如果在输入y之后,自动计算,那么应该把程序放到edit2的callback里面,不应该放到edit3的callback里面。

function edit2_Callback(hObject, eventdata, handles)
% hObject    handle to edit2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit2 as text
%        str2double(get(hObject,'String')) returns contents of edit2 as a double
x=str2double(get(handles.edit1,'String'))
y=str2double(get(handles.edit2,'String'))
val=x+y;
set(handles.edit3,'String',num2str(val));

那么当edit2失去焦点,或者输入之后,按enter的时候,edit3中就会显示计算结果了

板凳

对于问题2 
你也可以再设置一个push按钮   在它的callback里面 读取edit1 edit2的string 
用str2num转换为数字量后相加,再num2str后设置为edit3的string 这样就可以了  层次比较清晰 不容易发生混乱

我来回复

您尚未登录,请登录后再回复。点此登录或注册