我一直在尝试使用Guide创建一个MATLAB GUI:
i)具有输入参数(温度,超导间隙能量,展宽参数)并输出图表的函数 - 显示超导能隙的状态密度图。
注意:此功能涉及数字双重积分,因此使用滑块不能以简单的方式改变参数。为了研究不同参数的曲线变化,每次输入新参数时,函数double再次积分,并在同一轴内生成新曲线。
ii)GUI有4组输入字段,因此可以在给定时间在同一轴内绘制4条曲线进行比较。
我使用了以下代码:
handles.P1=plot(handles.dIdV,bias1,cond1,'r','linewidth',2);
%P1 = plot(handles.dIdV,bias1,cond1,'r','linewidth',2);
hold on
%plot(x,data(:,2),'b','linewidth',2)
%scatter(E,XDOS)
%xlim([min(bias) max(bias)])
%title(nem)
(请不要对评论感到困惑。' cond1'是参数set1的集成结果,这是针对数组'偏差'绘制的。因此DOS(偏差,温度,Δ-间隙值等的函数被积分到每个偏差值并存储在' cond1'中,然后根据该偏差和'偏差& #39;价值。)
要清除这一点,我写道:
% --- Executes on button press in clear1.
function clear1_Callback(hObject, eventdata, handles)
% hObject handle to clear1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
handles.temp1=0;
handles.delta1=0;
handles.tao1=0;
handles.vmod1=0;
handles.val1=0;
hold off
即。所有参数都重置为零,保持功能关闭。
对于4条不同的曲线,已经写了4次相同的代码。 因此,当给出绘图命令时,每条曲线都有一个保持功能,当按下清除按钮时,每次曲线都有一个保持功能。应该关掉。 例如使用parameterset1生成Curve1。按下clear1按钮应该为curve1关闭hold,以便可以将新值放入parameterset1中,并且可以在与curve2,curve3和curve4相同的轴上绘制新的curve1,而不会影响其他曲线。
执行'抓住'是否存在问题。并且'推迟'我不能一次删除一条曲线并将其替换为新曲线。
当我在任何句柄中输入新参数时,所有其他图表都会消失。
我哪里可能出错? 是否可以在MATLAB中按住,在单个轴上一次更换一条曲线?
非常感谢。
答案 0 :(得分:0)
这就是hold
应该如何工作的。如果要覆盖单个项目,只需重新分配每个绘图对象所包含的数据。例如,如果要替换handles.temp1
对象的数据,它将如下所示:
set(handles.temp1, 'XData', (New xdata), 'YData', (new ydata))
%You might need a drawnow() here but not sure.
您还可以使用set()
完全相同的方式更新其他线对象属性。
另外,请注意hold
永远不会关闭,否则下一个绘图项将覆盖其他所有内容。
编辑:我还想指出,设置handles.temp1 = 0
不是您想要做的。请注意,线对象具有"属性",这正是您尝试操作的内容。有关行属性,请参阅this。如果您对对象和OOP一无所知,请参阅this