Verfasst am: 05.11.2014, 19:55
Titel: In GUI mit 2 Checkboxes subplot erstellen
Hallo,
letzte Mal wurde mir so klasse geholfen, ich hoffe dieses Mal klappt es genauso.
Ich habe in einer GUI 2 Checkboxes, die wenn ich sie einzeln anwähle und ausführe den gewünschten Plot bringt.
In einer weiteren Bedingung habe ich festgelegt dass wenn ich nun beide Checkboxes betätigt habe, beide Grafiken als subplot in einem Fenster erscheinen.
Problem: Die Grafiken sehen z.T. anders aus und bei dem einen wird das Gitternetz überdeckt.
Hier mal der Quellcode
Code:
if(get(handles.checkbox2D,'Value') == get(handles.checkbox2D,'Max')) figure(figureNr) iflength(xAxisArr)==0 close(figureNr) figure(figureNr) end % plot route data if(get(handles.checkbox3D,'Value') == get(handles.checkbox3D,'Max')) subplot(1,2,1) end
if(get(handles.checkboxDifferenz,'Value') == get(handles.checkboxDifferenz,'Max')) % Calculate Difference Plot for index = 2 : length(yAxisArr)
yAxisArr(index-1) = yAxisArr(index) - yAxisArr(index-1);
end
yAxisArr = yAxisArr(1:end-1);
xAxisArr = xAxisArr(1:end-1);
end
if(get(handles.checkboxSum,'Value') == get(handles.checkboxSum,'Max'))
xAxisArr=cumsum(xAxisArr);
yAxisArr=cumsum(yAxisArr);
end
das ist viel Code und für uns schwierig zu sehen, wo das eigentliche Problem liegt. Bitte entweder
- den Code auf den wirklich relevanten Teil reduzieren oder
- ein komplett reproduzierbares Beispiel posten (bei GUIDE GUIs komplettes .m und .fig, sowie was in welcher Reihenfolge geklickt werden soll)
okay habe es mal auf das wichtigste gekürzt.
Fehler ist nun dass beim plotten von der Differenz und cumsum diese falsch angezeigt werden. Hoffe es ist verständlich
if(get(handles.checkboxDifferenz,'Value') == get(handles.checkboxDifferenz,'Max')) %plottet nur Differenz 2D
% Calculate Difference Plot for index = 2 : length(yAxisArr)
yAxisArr(index-1) = yAxisArr(index) - yAxisArr(index-1);
end
yAxisArr = yAxisArr(1:end-1);
xAxisArr = xAxisArr(1:end-1);
end
if(get(handles.checkboxSum,'Value') == get(handles.checkboxSum,'Max')) %%plottet nur cumsum 2D
xAxisArr=cumsum(xAxisArr);
yAxisArr=cumsum(yAxisArr);
end
und worin besteht nun genau die "falsche Anzeige"? Ich habe keine Ahnung, von welchem Gitternetz du sprichst.
Dass Plots z.B. die Achsenskalierung anders gewählt wird, wenn weniger Platz ist, ist ja so gedacht. Wenn du das nicht möchtest, musst du die Achsen eben selbst nach Wunsch anpassen.
Der Differenz plot zeigt beim subplot die falschen Werte an und ich verstehe nicht warum weil ich die ja in der if Bedingung drinstehen habe. Und ich habe ja grid in und dieses wird beim subplot über deckt so dass an der Seite nur ganz wenig von dem Gitternetz zu sehen ist.
wenn beide Bedingungen erfüllt sind, werden alle Blöcke ausgeführt. Das bedeutet insbesondere, dass im ersten Block xaxisarr und yaxisarr bereits überschrieben werden. Im zweiten Block wird von den neuen Werten die kumulative Summe berechnet, und wieder überschrieben.
Mit anderen Worten: wenn du Originalwerte zur Verfügung haben willst, dann musst du darauf achten, die Variablen nicht zu überschreiben.
Eine Möglichkeit:
Code:
if checkbox 1 & checkbox 2 aktiviert
... elseif checkbox 1 aktiviert
... elseif checkbox 2 aktiviert
... end
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.