【问题标题】:Changing slope of 2 lines on same plot with 2 separate sliders in Matlab在 Matlab 中使用 2 个单独的滑块在同一绘图上更改 2 条线的斜率
【发布时间】:2014-01-02 17:25:21
【问题描述】:

新的 Matlab 编码器在这里寻求关于我的第一个 GUI 的建议。我正在构建一个简单的 GUI,它在同一个图(axes1)上绘制 2 条线,并且我试图利用滑块将每条线的斜率独立地更改为与其关联的滑块的值。我已经创建了绘图,并且能够使用滑块回调更改每条线的斜率;但是,当我在更改 line-1 的斜率后更改 line-2 的斜率时,line-1 的斜率值恢复到其初始值,因此该图绘制了 line-2 斜率的变化,而 line-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 打印时(当任一滑块回调发生时),它会打印与通过滑块更改的句柄变量相反的句柄变量的初始值。

我遵循了其他人的指导并建立了一个单独的绘图函数,该函数由每个滑块的回调函数调用,但似乎无法让斜率值保持在滑块值。任何有关如何在更改另一条线时保留每条线的斜率的帮助将不胜感激。谢谢!

【问题讨论】:

    标签: matlab callback plot slider


    【解决方案1】:

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

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

     guidata(hObject,handles);
    

    【讨论】:

    • 非常感谢您回答了我的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多