使用MATLAB GUI将元素添加到矢量中

问题描述 投票:0回答:1

我是matlab的新手,我正在尝试创建一个progrem,它从用户获取参数(使用gui)获取x值和y值,将它们放入2个不同的向量中,当用户完成时,它使用plot来制作图形两个向量中的一个。

这是我试图做的:

function pushbutton1_Callback(hObject, eventdata, handles)
x=[];
y=[];
a=str2double(get(handles.edit1,'string'));
b=str2double(get(handles.edit2,'string'));
handles.x=[x a];
handles.y=[y b];
guidata(hObject, handles);




function Doit_Callback(hObject, eventdata, handles)
axes(handles.axes1)
handles.x;
handles.y;
handles.m=handles.x;
handles.n=handles.y;
plot(handles.m,handles.n);
guidata(hObject, handles); 

但是绘图功能不起作用。我想从gui中的编辑文本中获取a和b并将它们放入向量x和向量y中,当我完成添加所有元素时我想要的试图在Doit函数中使用完整的向量。任何帮助,将不胜感激

matlab vector matlab-guide
1个回答
0
投票

使用以下代码:

x=[];
y=[];
% ...
handles.x=[x a];
handles.y=[y b];

每次用户完成插入值时,他得到的只有两点(ab)......因为:

handles.x = [x a]; % x=[]
handles.x = [[] a];
handles.x = a;

当用户想要从头开始重新启动时,您应该实现一个清除handles.xhandles.y变量的按钮,并更改您的回调代码,以便将值附加到现有值,如下所示:

function pushbutton1_Callback(hObject, eventdata, handles)
    handles.x = [handles.x str2double(get(handles.edit1,'string'))];
    handles.y = [handles.y str2double(get(handles.edit2,'string'))];
    guidata(hObject,handles);

然后(handles.axes1应该是你GUI中的现有轴,所以你正确清除它,但我会改用cla):

function Doit_Callback(hObject, eventdata, handles)
    cla(handles.axes1);
    plot(handles.axes1,handles.x,handles.y);
    guidata(hObject,handles);
© www.soinside.com 2019 - 2024. All rights reserved.