Matlab 如何在按下按钮2之前删除GUI中的信号?

Matlab 如何在按下按钮2之前删除GUI中的信号?,matlab,user-interface,matlab-guide,Matlab,User Interface,Matlab Guide,在我的GUI中有2个按钮。现在,当我按下pb1键时,正弦波信号出现在我的图形中。同样,当我按下pb2时,随机信号出现。但是pb2信号来自正弦波信号(pb1)。在按下pb2信号之前,如何删除正弦波信号???让我们假设您有一个单轴GUI(称为图形)和两个按钮:一个用于绘制波形信号,另一个用于绘制随机信号 由于两个按钮都在同一轴上打印数据,因此在打印新数据之前必须清除该按钮,以避免重叠。这可以使用 以下是两个按钮处理程序的示例: % Button handler for plotting a wave

在我的GUI中有2个按钮。现在,当我按下pb1键时,正弦波信号出现在我的图形中。同样,当我按下pb2时,随机信号出现。但是pb2信号来自正弦波信号(pb1)。在按下pb2信号之前,如何删除正弦波信号???

让我们假设您有一个单轴GUI(称为
图形)和两个按钮:一个用于绘制波形信号,另一个用于绘制随机信号

由于两个按钮都在同一轴上打印数据,因此在打印新数据之前必须清除该按钮,以避免重叠。这可以使用

以下是两个按钮处理程序的示例:

% Button handler for plotting a wave signal.
function pushbutton1_Callback(hObject, eventdata, handles) 
    fc = 60;     % frequency
    fs = 8000;   % samples per second
    dt = 1 / fs; % seconds per sample
    st = 0.1;    % seconds
    t = (0:dt:st-dt)';
    x = cos((2 * pi()* fc) .* t);

    % Clear axis before plotting the new signal...
    cla(handles.Graph);
    plot(handles.Graph,t,x);
end

% Button handler for plotting a random signal.
function pushbutton2_Callback(hObject, eventdata, handles)
    x = rand(100,1);

    % Clear axis before plotting the new signal...
    cla(handles.Graph);
    plot(handles.Graph,x);
end

输入新的推送命令时,可以先清除轴。为此,您可以使用cla功能:

cla(handles.axes1)
plot(handles.axes1,x,y)

谢谢,我只是用了“cla”它删除了以前的信号。你能告诉我怎样才能像上面提到的那样用轴移动信号吗?我得到了恒定轴的运动信号…它的输出看起来非常笨拙。非常感谢。我在GUI中还有一个问题。信号应随轴移动。这里,我从范围值调用数据(从simulink和它块数据)。我在上面的评论中提到了我的代码。你能帮帮我吗。对不起,我失约了。这里的空间不够。对不起,我不清楚。你能说得更具体些吗?我不知道如何在测试环境中重现代码。这是我的代码。。。evalin('base','sim('testgui'))timeData=evalin('base','ScopeData.time');timeData=timeData';%显示(时间数据);signalData=evalin('base','ScopeData.signals.values');信号数据=信号数据';%显示(信号数据);曲线=动画线;轴([0 1000-1]);集合(gca,'XLim',[0 1000],'YLim',[-1]);网格化;对于i=1:长度(时间数据)添加点(曲线、时间数据(i)、信号数据(i));drawnow end要绘制一个随轴移动(连续)的信号。但这里我得到的是唯一一个时间周期不变的运动信号,这很清楚。但是,如果我复制粘贴到我的Matlab(机会是),它会抛出一个错误,因为丢失的东西。所以你应该描述一下你想做什么。。。随着时间移动的信号?但是怎么做呢?在窗口中或添加点并放大轴?无论如何,我认为计时器可以处理这个问题。只需删除向量的第一个元素并将新元素附加到它。相应地修改刻度。