Verfasst am: 18.10.2020, 12:27
Titel: Figure als axes anzeigen lassen
Moin in die Runde,
ich schreibe gerade für meine Abschlussarbeit ein GUI und bin etwas ratlos. Zunächst lade ich ein gespeichertes Bild in mein GUI mit dem folgenden Code:
Dieses Bild möchte ich nun Fouriertransformieren mittels einer Variante des IFTA. Die Fouriertransformierte soll dann in einem anderen Axes angezeigt werden. Dafür ist dieser Code:
Code:
N = 512;
A = im2double(rgb2gray(app.Mask));
A = padarray(A,[N-150 N-150],'post');
B = zeros(N,N);
B(129,129) = 1000;
Diesen habe ich aus einem Paper über besagte IFTA Alternative. Die letzten drei Zeilen sollen mir dann diese Maske in dem Plot-Fenster anzeigen. Leider wird mir die Fouriertransformierte allerdings nur als Figure ausgegeben und in dem PlotPreview-Fenster ist nur ein schwarzes Bild zu sehen. Wie bekomme ich das Bild aus dem Figure in die axes-Umgebung? Kann mir da jemand weiterhelfen?
Tut mir super Leid, wenn ich hier programmiertechnischen Quatsch oder so mache. Ich habe viel Code von meinem Betreuer übernommen und ohne mich mit Matlab richtig auszukennen einfach mal losgelegt. Ich freue mich über jede Hilfe, die ich von euch erhalte. Danke schonmal.
Mit besten Grüße
Jan
P.S. Ich hoffe, dass der Code richtig angezeigt wird.
mir ist nicht klar, welche Zeilen nun das Problem darstellen.
Generell würde ich in App Designer bei jedem Graphik-Befehl das Axes angeben, in dem sie ausgeführt werden sollen.
Der figure-Befehl erzeugt ein separates Fenster. Wenn du kein separates Fenster willst, dann solltest du das weglassen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2020, 14:24
Titel:
Hallo Harald,
danke für deine Antwort. Wenn ich den figure-Befehl herauslasse, dann wird mir das figure nicht mehr angezeigt, aber in dem vorgesehenen plot-Fenster im GUI, ist nur eine schwarze Fläche. Gibt es einen Code, um das Bild aus dem externen Fenster explizit in solch ein plot-Figure einzubetten?
bitte schreib doch, welche Zeilen konkret das Problem darstellen.
Zitat:
Gibt es einen Code, um das Bild aus dem externen Fenster explizit in solch ein plot-Figure einzubetten?
Nicht dass ich wüsste. Man kann höchstens die darin enthaltenen Objekte kopieren (copyobj). Das sollte aber keinen Unterschied in der Darstellung machen im Vergleich zur direkten Erstellung des Plots in App Designer.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2020, 14:48
Titel:
Moin Harald,
ich bekomme keine Fehlermeldung, wenn ich das Programm laufen lasse. Was mich wundert ist, dass in dem Plot-Feld des GUI nicht das Selbe angezeigt wird, wie in dem externen figure.
Wenn ich ein Bild auswähle, wird mir dieses korrekt angezeigt und die Fouriertransformierte auf Knopfdruck im externen figure. Wenn ich nun erneut den Befehl zur Transormation gebe, bekomme ich einen Fehler beim Befehl
Dieser Fehler lautet:
Error using rgb2gray>parse_inputs (line 80)
MAP must be a m x 3 array.
Error in rgb2gray (line 52)
isRGB = parse_inputs(X);
Kannst du damit was anfangen?
Besten Gruß
Jan
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2020, 14:52
Titel:
Und noch eine Frage... Wie meinst du das, das hinter jedem Grafik-Befehl die Axes mit angegeben werden soll. Wie muss ich das machen?
Und sorry, wenn ich so dumme Fragen stelle, aber ich bin wirklich etwas aufgeschmissen...
beziehen sich auf das momentane Axes. Das ist ungut, stattdessen würde ich z.B. app.plotPreview verwenden oder worauf auch immer das angewendet werden soll.
Zitat:
Was mich wundert ist, dass in dem Plot-Feld des GUI nicht das Selbe angezeigt wird, wie in dem externen figure.
Das wundert mich auch, und ich weiß immer noch nicht, bei welchem Befehl es nun eigentlich hakt. Das müsstest du mir schon schreiben, ich kann es ja schlecht ausprobieren ohne App, Daten etc. Wenn du dir nicht sicher bist, wo das Problem ist, dann geh das im Debugging-Modus Schritt für Schritt durch.
Zitat:
Wenn ich nun erneut den Befehl zur Transormation gebe, bekomme ich einen Fehler
Wenn MATLAB zweimal dieselben Anweisungen bekommt, macht es auch zweimal dasselbe. Was ändert sich also in der Zwischenzeit? Wird insbesondere app.Mask überschrieben?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2020, 15:32
Titel:
Hallo Harald,
mittlerweile habe ich den Fehler gefunden. Das schwarze Bild in den Axes war schon richtig, jedoch musste ich statt imagesc ein pcolor verwenden. Dann hat es hingehauen.
Die set(...)-Befehle werde ich gleich nochmal auf das plotPreview beziehen. Das ist ein guter Tipp.
Der Fehler entstand tatsächlich wohl durch solch eine Überschreibung, aber mittlerweile taucht er auch nicht mehr auf.
Hab also vielen, vielen Dank für deine Hilfe! Ich bin ganz begeistert, dass es jetzt funktioniert!
Lieben Gruß und einen schönen Sonntag noch!
Jan
Einstellungen und Berechtigungen
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.