在Matlab中使用2个单独的滑块在同一绘图上更改2行的斜率

时间:2014-01-02 07:13:22

标签: matlab callback plot slider

newish Matlab编码器在这里寻求我的第一个GUI的建议。我正在构建一个简单的GUI,在同一个图形(轴1)上绘制2条线,我正在尝试使用滑块将每条线的斜率独立地更改为与其关联的滑块的值。我创建了绘图,并且能够使用滑块回调更改每条线的斜率;然而,当我在改变第1行的斜率后改变第2行的斜率时,第1行的斜率值恢复到其初始值,因此图形绘制了变化的第2行斜率,其余为第1行斜率在其初始值。当尝试改变第1行的斜率时,第2行也会出现同样的情况。

     function slider1_Callback(hObject, eventdata, handles)
     % hObject    handle to slider1 (see GCBO)
     % eventdata  reserved - to be defined in a future version of MATLAB
     % handles    structure with handles and user data (see GUIDATA)
     handles.gNa = get(hObject,'Value')
     plot_axes1(hObject, eventdata, handles);
     end

     function slider3_Callback(hObject, eventdata, handles)
     % hObject    handle to slider3 (see GCBO)
     % eventdata  reserved - to be defined in a future version of MATLAB
     % handles    structure with handles and user data (see GUIDATA)
     handles.gK = get(hObject,'Value')
     plot_axes1(hObject, eventdata, handles);
     end

     function plot_axes1(hObject, eventdata, handles);
     Vk = -77;
     Vna = 50;
     V = (-80:0.1:60);
     Ik = handles.gK*(V - Vk);
     Ina = handles.gNa*(V - Vna);
     axes(handles.axes1);
     plot(V, Ik, V, Ina);
     end

此外,当handles.gK或handles.gNa打印时(当滑块回调发生时),它会通过滑块打印与正在更改的句柄变量相反的句柄变量的初始值。

我已经按照其他人的指导制定了一个单独的绘图功能,该功能由每个滑块的回调函数调用,但似乎无法使斜率值保持在滑块值。任何关于如何保持每条线的斜率而另一条线被改变的帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

使用handles结构存储其他数据时,需要调用guidata以确保句柄结构保持更新。

在回调结束时(在分配值后最早),您需要做的就是添加一行

 guidata(hObject,handles);