MATLAB gui将数据绘制在新图形中,而不是指定的轴上

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

我正在开发一个MATLAB GUI,应该可以获取串行数据并在处理后将其绘制出来。我用bytesavailabefcn一个回调函数,当可以使用预定数量的字节(bytesavailablefcncount)时执行。

该代码运行良好,并获取了串行数据。但是,当使用plotyy绘制数据时,它会打开一个新图形并在其上绘制数据,而不是按照在GUI中绘制并标记为axes1的轴进行绘制。我使用axes(handles.axes1)将其分配给axes1,但问题仍然存在。我正在使用MATLAB 2007b,并且无法切换到较新版本。

这是我的代码的简化版:

function pushbutton1_Callback(hObject, eventdata, handles)
       ...
       ...
       global s;
       s = serial('COM4');       % Create a serial object 
       s.baudrate = 9600;
       s.BytesAvailableFcnMode = 'byte';
       s.BytesAvailableFcnCount = 21;
       s.BytesAvailableFcn = {@instrcallback,gcf};
       fopen(s);
       ...
       ...
end



function instrcallback(hObject, eventdata,fignum)
       ...
       ...
       handles = guidata(fignum);
       global s;
       axes(handles.axes1);
       [ax,h1,h2] = plotyy(G1,m1,G1,m2);
       set(ax(1),'YLim',[(y1offset -zoom1-10), (y1offset +zoom1+10)]);
       set(ax(2),'YLim',[(y2offset -zoom2-10), (y2offset +zoom2+10)]);
       set(ax(1),'BOX' ,'off');
       set(ax(1),'Xgrid','on');
       set(ax(2),'Ygrid','on');  
       drawnow;
       ...
       ...
end



我正在开发一个MATLAB GUI,应该可以获取串行数据并在处理后将其绘制出来。我使用bytesavailabefcn一个回调函数,当预先指定的字节数(...

matlab user-interface plot matlab-guide handle
1个回答
0
投票

正确的语法是:[ax,h1,h2] = plotyy(handles.axes1, G1,m1,G1,m2);

© www.soinside.com 2019 - 2024. All rights reserved.