在Matlab中用两个单独的滑块改变同一绘图上两条直线的斜率

在Matlab中用两个单独的滑块改变同一绘图上两条直线的斜率,matlab,callback,plot,slider,Matlab,Callback,Plot,Slider,这里有一个新的Matlab程序员,他正在就我的第一个GUI寻求建议。我正在构建一个简单的GUI,在同一个图形(axes1)上绘制两条线,并尝试利用滑块将每条线的斜率独立地更改为与其关联的滑块的值。我已经创建了绘图,并且能够使用滑块回调更改每条线的坡度;但是,当我在更改第1行的坡度后更改第2行的坡度时,第1行的坡度值将恢复为其初始值,因此图形将绘制正在更改的第2行坡度,而第1行的坡度保持在其初始值。当尝试更改线1的坡度时,线2也会发生同样的情况 function slider1_Call

这里有一个新的Matlab程序员,他正在就我的第一个GUI寻求建议。我正在构建一个简单的GUI,在同一个图形(axes1)上绘制两条线,并尝试利用滑块将每条线的斜率独立地更改为与其关联的滑块的值。我已经创建了绘图,并且能够使用滑块回调更改每条线的坡度;但是,当我在更改第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打印时(当滑块回调发生时),它会打印句柄变量的初始值,与通过滑块更改的值相反


我遵循了其他人的指导,建立了一个单独的绘图函数,该函数由每个滑块的回调函数调用,但似乎无法使坡度值保持在滑块值。如果您能帮助您在更改另一条线路时保持每条线路的坡度,我们将不胜感激。谢谢

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

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

 guidata(hObject,handles);

非常感谢你回答了我的问题!