首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab中使用两个独立的滑块更改同一图上两条线的斜率

在Matlab中使用两个独立的滑块更改同一图上两条线的斜率
EN

Stack Overflow用户
提问于 2014-01-02 15:13:22
回答 1查看 433关注 0票数 1

新手Matlab程序员在这里寻求关于我的第一个GUI的建议。我正在构建一个简单的图形用户界面,它在同一张图(axes1)上绘制两条线,并且我试图利用滑块将每条线的斜率独立地更改为与其关联的滑块的值。我已经创建了绘图,并且能够使用滑块回调来更改每条线的斜率;但是,当我在更改了线-1的斜率之后更改了线-2的斜率时,线-1的斜率值恢复到其初始值,因此图形绘制了变化的线-2的斜率,而线-1的斜率保持在其初始值。当尝试更改行-1的斜率时,行-2也会发生同样的情况。

代码语言:javascript
复制
     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打印时(当发生滑块回调时),它会打印句柄变量的初始值,而不是通过滑块更改的值。

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

EN

回答 1

Stack Overflow用户

发布于 2014-01-02 17:25:21

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

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

代码语言:javascript
复制
 guidata(hObject,handles);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20878106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档