WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

2 axes in gui beschreiben??

 

wappla
Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 03.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2008, 15:27     Titel: 2 axes in gui beschreiben??
  Antworten mit Zitat      
hallo

in einer funktion möchte ich 2 axes eines gui beschreiben. es wird aber immer nur eines beschrieben und zwar mit dem letzten das ich ausgegeben habe. ich denke ich muss irgendwie mit dem nir den hjandles zwischen den axes hin und her schalten, schaff das aber nicht da ich in der funktion ja kein handles habe. wenn ich das handle an die fkt übergeben bekomme ich die meldung "??? Attempt to reference field of non-structure array."

kann mir jemand weiterhelfen?
mfg
Private Nachricht senden Benutzer-Profile anzeigen


dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 09:54     Titel:
  Antworten mit Zitat      
Hallo,

wie liegen denn die Achsen? Übereinander oder nebeneinander? Normalerweise kommst du nich an handles vorbei (woher soll Matlab auch wissen wohin dein Plot o.ä. kommen soll?). Poste doch bitte mal ein Minimalbeispiel. Vielleicht hilft dir ja schon
Code:
weiter (liefert das handle auf die aktuellen Achsen zurück).

Die Fehlermeldung sagt aus dass du versuchst auf ein Feld einer Variablen zuzugreifen obwohl die Variable gar keine Struktur ist, z.B.
Code:
x = 5;y = x.a * 2;
d.h. dass du wohl bei deiner Übergabe etwas falsch machst.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
keloid
Forum-Century

Forum-Century


Beiträge: 216
Anmeldedatum: 04.10.07
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 22.07.2008, 11:15     Titel:
  Antworten mit Zitat      
Ein Codebeispiel wäre wirklich super.

Intuitiv würde ich sagen, dass Dir der Befehl
Code:
weiterhilft. Wenn Deine Axes beispielsweise axes1 und axes2 heissen, sieht das dann in etwa so aus:
Code:
% ... Programmcode
axes(handles.axes1); % Auswahl der ersten Axes
plot(); % Plot für erste Axes
% weiterer Programmcode
axes(handles.axes2); % Auswahl der zweiten Axes
plot(); % Plot wird in zweite Axes gezeichnet
% weiterer Programmcode


Sinnvoll ist es dabei, vor jedem Plotbefehl anzugeben, in welchem Axes-Objekt gezeichnet werden soll.
Private Nachricht senden Benutzer-Profile anzeigen
 
wappla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 03.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 15:03     Titel:
  Antworten mit Zitat      
das problem ist das ich das handle nicht als übergabe parameter erhalte. der Tag meiner diagramme ist "signal" und "fft". sie befinden sich in einem gui untereinander.

Code:
htest=gcf
  axes(htest.signal);
  plot(Fs,FFTSignal(1:laengesignalh));

  htest=gcf
  axes(htest.fft);
  plot(Time,Ampl);



Fehlermeldung: ?? Attempt to reference field of non-structure array.

help!!
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 16:27     Titel:
  Antworten mit Zitat      
Hallo,

das Problem scheint wohl zu sein dass htest.signal bzw. htest.fft gar nicht existieren! Du weist der Variable htest das Handle zu der Figure zu, der Wert bzw. alle Felder die htest bisher hatte, werden gelöscht. Du könntest bspw auch subplot verwenden.
Code:
figure;
subplot(211);
plot(Fs,FFTSignal(1:laengesignalh));

subplot(212);
plot(Time,Ampl);


Falls die handles zu den Achsen existieren, funktioniert dein Code sobald du
Code:
weglässt.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
wappla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 03.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2008, 15:05     Titel:
  Antworten mit Zitat      
ok besten dank erstmal
also mit diesem code kann ich die 2 axes ansprexchen und beschreiben:

Code:
hui1 = findobj('Tag','MainMenu')  
hui2 = findobj(hui1,'Tag','fft')
axes(hui2);
plot(Fs,FFTSignal(1:laengesignalh));

hui3 = findobj('Tag','MainMenu')  
hui4 = findobj(hui3,'Tag','signal')
axes(hui2);
plot(Time,Ampl);



wenn diese funktion aber erneut aufgerufen wird kommt ein fehler und zwar:
??? Error using ==> axes
Invalid object handle.

also der programmabschnitt funktioniert nur das erste mal, dann ist das s.handle (hui2=Empty matrix) ungültig. muss man die axes irgendwie wieder freigeben?

mfg

Edit: Siehe den Hinweis von dib0r bezüglich der Code-Formatierung.
mfg nschlange
Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2008, 10:12     Titel:
  Antworten mit Zitat      
Hallo,

benutze bitte für Codeschnipsel auch die Code umgebung, das macht das ganze übersichtlicher Smile

Zu deinem Problem: Anscheinend existieren die Achsen beim zweiten Aufruf nicht mehr (oder haben keine entsprechendes Tag), sonst würdest du sie finden.

Was spricht eigentlich dagegen, den Achsen handles zuzuweisen und die dann anzusprechen?

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
wappla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 03.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2008, 10:31     Titel:
  Antworten mit Zitat      
hallo
gegen handles zuweisen spricht nix, außer dass ich nicht weiß wie ich das mache. habe da ein fettes "Matlab kompakt" buch, mit sehr fielen nützlichen informationen, aber wenn ich nicht weiß wie eine funktion heißt kann ich genauso die berühmte nadel im heuhaufen suchen Smile
vielleicht kannst du mir das posten
danke, mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 24.07.2008, 10:48     Titel:
  Antworten mit Zitat      
Moin,

dem Axes oder auch einer figure einen Handle zuweisen, bedeutet, dass man denen eine Variable zuordnet:
Code:

% Zuweisung eines handels zu einer figure:
h1 = figure('Name','Testfigure');
% jetzt kann die Figure direkt über den handle angesprochen werden:
plot(h1,[1:5],[1:5].*2);

% Zuweisung eines handels zu einer axes:
h2 = axes('Parent',ha,'Visible','on',...
          'Units','normalized','Position',[.25,.25,.5,.5]);
% ansprechen erfolgt analog zu oben:
plot(h2,[1:5],[1:5].*2);
 


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
wappla
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 20
Anmeldedatum: 03.07.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.07.2008, 11:29     Titel:
  Antworten mit Zitat      
hi
besten dank, habs jetzt geschafft.
hät eigentlich auch selber draufkommen können.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.