Verfasst am: 23.11.2020, 15:38
Titel: Variablen, Zugriff, Verschiedene Callback
Hallo Leute,
ich habe eine Callbackfcn in meiner GUI mit welcher ich die Phase eines Bildes ändern kann. Die Änderung wird in einem neuen Handle angezeigt. Ich habe das handle auch in einer Variable abgespeichert.
Jetzt würde ich gern in einer weiteren Callback auf genau dieses handle zurückgreifen. Jedoch ist die Variable in der ich es abgespeichert habe unbekannt.
Wie kann ich auf dieses handle von einer Callback auf die andere zurückgreifen oder kann ich die Variable sogar 'global' machen sodass ich sie in jeder Function verwenden kann?
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 ;)
axes(handles.axes5)
xr=imagesc(handles.vektor_x,handles.vektor_y,(X_rot)) ; % real parts
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Realteil') xlabel('Horizontale Position in mm');
ylabel('Vertikale Position in mm');
colormapgray;
axes(handles.axes6)
yr=imagesc(handles.vektor_x,handles.vektor_y,(Y_rot)) ; % imaginary parts
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Imaginärteil') xlabel('Horizontale Position in mm');
ylabel('Vertikale Position in mm');
colormapgray;
axes(handles.axes7)
zr=imagesc(handles.vektor_x,handles.vektor_y,abs(Z_rot)) ;
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Betrag') xlabel('Horizontale Position in mm');
ylabel('Vertikale Position in mm');
colormapgray;
axes(handles.axes8)
zr1=imagesc(handles.vektor_x,handles.vektor_y,atan(Y_rot./X_rot)) ;
ax = gca;
ax.YDir = 'normal' % Richtung vertikal korrigieren title('Phase') xlabel('Horizontale Position in mm');
ylabel('Vertikale Position in mm');
colormapgray;
else errordlg('Laden Sie zuerst die Daten ein!') end guidata(hObject, handles);
inputOptions={'Realteil', 'Imaginärteil', 'Betrag','Phase','End'};
defSelection=inputOptions{end};
iSel=bttnChoiseDialog(inputOptions,...
'Kontrastbearbeitung',...
defSelection,...
'Wählen Sie das Bild, in welchem das Signal-Rausch-Verhältnis bestimmt werden soll');
ActRqst = inputOptions{iSel};
switch ActRqst
case(inputOptions{1})
h=questdlg('Markieren Sie N_area, ','Matlab EddyAnalzer','OK','end','end');
switch h
case 'OK'
axes(handles.axes5) %%hier würde ich gern xr,yr,zr oder zr1 übergeben um es in dieser callback zu bearbeiten!
RGB=imagesc(handles.vektor_x,handles.vektor_y,(X));
ax = gca;
ax.YDir = 'normal'
colormapgray;
title('Originalbild');
I=RGB;%I=rgb2gray(RGB);
[J,rect] = imcrop(I);
N_area=J;
% figure % imagesc(handles.vektor_x,handles.vektor_y,N_area); % ax = gca; % ax.YDir = 'normal' % title('Erster Ausschnitt'); % colormap gray;
h=questdlg('Zeichnen Sie den Bereich für Signal S_area ein.','Matlab EddyAnalzer','OK','end','end');
switch h
case 'OK'
axes(handles.axes6)
h=imagesc(handles.vektor_x, handles.vektor_y,N_area);
ax = gca;
ax.YDir = 'normal'
colormapgray;
title('Ausschnitt');
[G,rect_] = imcrop(h);
S_area=G;
figure plot(S_area)
axes(handles.axes7) imagesc(handles.vektor_x, handles.vektor_y,S_area);
ax = gca;
ax.YDir = 'normal'
colormapgray;
title('Ausschnitt 2') case 'end'
return end case 'end'
return end fprintf('Dummy action. You choose: %s\n', inputOptions{1});
%erste Option beendet
%%Es folgen noch weitere Optionen und eine Berechnung
... und sollte ich es noch nicht gesagt haben:
1. Ich empfehle eine systematische Einarbeitung. Wenn man einmal grundlegende Konzepte z.B. des Aufbaus von Benutzeroberflächen verstanden hat, bleibt man nicht mehr an solchen "Kleinigkeiten" hängen.
2. Die Zukunft der App-Erstellung ist App Designer. Statt viel Aufwand zu investieren, die Oberfläche im veralteten GUIDE zu pflegen, würde ich den Umstieg eher früher als später empfehlen.
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 ;)
Die Zukunft der App-Erstellung ist App Designer. Statt viel Aufwand zu investieren, die Oberfläche im veralteten GUIDE zu pflegen, würde ich den Umstieg eher früher als später empfehlen.
Der Aufwand würde das Ergebnis nicht rechtfertigen da vieles nicht von mir ist.
danke für den Ansatz. Aber in der 2. function habe ich deswegen trotzdem kein Zugriff wenn ich im case(inputOptions{2}) statt Y die Struktur
Bei der Fehlermeldung scheint das Problem nicht zu sein, dass yr nicht definiert ist, sondern dass es den falschen Datentyp hat.
Wie hast du handles.yr denn im ersten Teil belegt?
Zitat:
Der Aufwand würde das Ergebnis nicht rechtfertigen da vieles nicht von mir ist.
Ich denke nicht, dass der Aufwand extrem hoch wäre.
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 ;)
Bei der Fehlermeldung scheint das Problem nicht zu sein, dass yr nicht definiert ist, sondern dass es den falschen Datentyp hat.
Wie hast du handles.yr denn im ersten Teil belegt?
Y_rot ist eine Matrix mit mehreren Einträgen aus welchen ein Bild generiert wird das in einer axes drin ist. Dieses Bild in axes5 oder axes6 je nach Auswahl möchte ich eigentlich in meiner 2. Function weiterbearbeiten
wenn du Y_rot weiterverarbeiten willst, dann brauchst du halt auch Y_rot übergeben und nicht yr.
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 ;)
ich habe die Variablen jetzt an eine handles Struktur übergeben und greife hierüber in der anderen Callback drauf zu. Funktioniert genau so wie es sein soll.
ich würde das ganze gerne noch mit einer Abfrage optimieren.
Und zwar würde ich gern abfragen, ob der slider benutzt wurde oder nicht. Falls nicht sollen die Werte wie zuvor verwendet werden ansonsten die aus der sliderCallback
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 ;)
zu der neuen Frage: ich würde handles.X_rot etc. in der OpeningFcn setzen. Dann kannst du dir spätere Abfragen ersparen.
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 ;)
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.