Hallo,
ich schreib derzeit an einem GUI, welches verinfacht dargestellt wie folgt funktiniert:
Es werde zunächst Daten eingelesen, welche man dann auf Verschiedene Arten auswerten und Plotten kann. Die Auswahl erfolgt über Radiobuttens auf einem Button Group Pannel
Dabei wird der plot immer in axis1 hineingeplottet nachdem alle Ploteigenschaften gemacht sind hold off gesetzt, damit das ganze bei einem neuen Plot wieder verschwindet und stattdesen die neue grafik auftaucht.
Wenn allerdings einmal der Befehl plotyy verwendet wird, funktioniert das ganze nicht mehr reibungslos. Ich kann dannach nicht mehr die normale plot funktion aufrufen ohne das folgender fehler erscheint, gefolgt von ganz vielen Warnungen.
Code:
Invalid handle object.
Error in ==> plotyy>localUpdatePosition at 378
newDestPos = hgconvertunits(hFig,newPos,get(axSource,'Units'),get(axDest,'Units'),get(axSource,'Parent'));
Warning: Error occurred while evaluating listener callback.
> In legendcolorbarlayout>makeSpace at 914
In legendcolorbarlayout at 110
In scribe.legend.init at 138
In scribe.legend.legend at 122
In legend>make_legend at 372
In legend at 274
In UBXGUI>pushbuttonSkyplot_Callback at 655
In gui_mainfcn at 96
In UBXGUI at 42
In @(hObject,eventdata)UBXGUI('pushbuttonSkyplot_Callback',hObject,eventdata,guidata(hObject))
Meine einzige Idee das Problem zu beseitigen war den inhalt von axis1 vor dem neuen plot zu beseitigen.
Ausprobiert habe ich folgende befehle:
--> cla
--> clear handles.axis1
--> clear all axis
Nur bin ich mit meinem Latein an dieser Stelle am Ende.
Würde mich sehr freuen, wenn mir jemand weiterhelfen kann.
Plotyy erstellte dann zwei Linienplots, wovon mit cla einer wieder gelöscht wird.
An der Fehlermeldung an sich ändert sich dadurch absolut gar nichts :/
Gibt es denn vll eine andere Möglichkeit zwei Plots mit unterchiedlicher Skalierung und Achsenbeschriftung zu realisieren? Und den Fehler so zu umgehen?
Hmmm, der Plot inhalt wäre somit gelöscht ... und der fehler taucht immernoch auf. :/
Aber ich habe jetzt grob herausgefunden woran es liegt.
Wenn ich beim nächsten plot keine legende verwende kommt kein fehler, wenn ich eine verwende, kommt die besagte meldung.
Mal ein Auszug aus dem Code:
1.) der Pushbutton Uhr wird gedrückt:
Code:
function pushbuttonUhr_Callback(hObject, eventdata, handles) % hObject handle to pushbuttonUhr (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
iraw = length(handles.tbereich) ;
t = handles.rtime_raw(1:iraw) ;
r2 = handles.nav.clock(1:iraw,2);
r3 = handles.nav.clock(1:iraw,3);
2.) Beispielhaft wird der radiobuttonCA gedrückt
Je nachdem ob hier die legende verwendet oder nicht verwendet wird, erscheint die oben stehende Meldung.
Code:
function uipanelAuswerteverfahren_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to the selected object in uipanelAuswerteverfahren % eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only) % OldValue: handle of the previously selected object or empty if none was selected % NewValue: handle of the currently selected object % handles structure with handles and user data (see GUIDATA) % Zur Zeit werden nur GPS-Satelliten betrachtet!!!
iraw = length(handles.tbereich) ;
t = handles.rtime_raw(1:iraw) ;
switchget(hObject,'Tag')% Get Tag of selected object case 'radiobuttonCA'
% Berechnung
r = handles.ca(:,handles.prn)./1000 ;
% Plot
handles.axis1 = plot(t , r, '-d', 'MarkerSize',4);
hold on
YLabel('C/A [km]');
ylim('auto');
XLabel('GPS Zeit [sec]');
set(gca,'XMinorTick','on','XTickLabel',get(gca,'XTick')) for i = 1 : length(handles.prn)
legendinhalt{i} = strcat('Sat',num2str(handles.prn(i)));
end legend(legendinhalt,'Location','EastOutside')
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.