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



新的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打印时(当滑块回调发生时),它会打印与通过滑块更改的句柄变量相反的句柄变量的初始值。

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

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

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

guidata(hObject,handles);

最新更新