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

Wie plotten in Axes?

 

voice
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 77
Anmeldedatum: 29.04.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2010, 09:07     Titel: Wie plotten in Axes?
  Antworten mit Zitat      
Guten Morgen,

ich möchte gerne ein Audiowave in einem Axes plotten lassen.
Ich hatte mir folgendes gedacht:

Code:

[y,r] = wavread('rec.wav');
t = length(y)/r;
plot(handles.axes1,t,y);
 


Mit t berechne ich mir ja die zeitliche x Achse. Jetzt möchte ich in ein Axes namens axex1 das Waveform plotten mit der zeitlichen x Achse sowie den y-Werten.

Momentan gibt es nur einen Strich in der Mitte der Axes. Was habe ich falsch gemacht?`

Und am liebsten hätte ich die y-Achse auch dynamisch programmiert, sodass sich die Skalar in Abhängigkeit der Amplitude ändert. Hätte da jmd. einen Tip für mich?

Dank und Gruß

voice
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2010, 13:29     Titel:
  Antworten mit Zitat      
Hallo,

t und y sollten Vektoren gleicher Länge sein. Du dachtest wahrscheinlich an etwas in der Art:
Code:
t = (1:length(y))./r;


Die Skalierung der y-Achse passt sich generell an die im Koordinatensystem geplotteten Werte an.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 14.05.2010, 19:32     Titel:
  Antworten mit Zitat      
Ich bin derzeit auf der Suche nach etwas ähnlichem und zwar möchte ich mehrere Kurven plotten in unterschiedliche axes in GUI. Jedoch plottet es mir immer nur die letzte Funktion, hold hilft auch nicht weiter.
So sieht meine Syntax aus:

Code:

 plot(handles.axes1, X1, Y1, 'r')      % Kurve 1
 plot(handles.axes1, X2, Y2, 'b')      % Kurve 2

 plot(handles.axes2, X3, Y3, 'c')      % Kurve 3        
 plot(handles.axes2, X4, Y4, 'm')     % Kurve 4
 


Vielleicht hat mir einer von euch einen Tipp.
_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.05.2010, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

hold ist immer nur auf ein Koordinatensystem bezogen, das momentane.

Code:
plot(handles.axes1, X1, Y1, 'r')      % Kurve 1
hold on
 plot(handles.axes1, X2, Y2, 'b')      % Kurve 2
hold off

 plot(handles.axes2, X3, Y3, 'c')      % Kurve 3
hold on        
 plot(handles.axes2, X4, Y4, 'm')     % Kurve 4
hold off

sollte also funktionieren. Alternativ:
Code:
plot(handles.axes1, X1, Y1, 'r', X2, Y2, 'b')      % Kurven 1 & 2
 plot(handles.axes2, X3, Y3, 'c', X4, Y4, 'm')      % Kurven 3 & 4


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 15.05.2010, 15:46     Titel:
  Antworten mit Zitat      
Super, vielen Dank!
Komischerweise funktioniert nur die zweite Variante, das mit dem hold klappt irgendwie nicht.
_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 18.05.2010, 21:03     Titel:
  Antworten mit Zitat      
Eine kleine Sache noch, mein code sieht nun folgendermaßen aus:
Code:

Schleife
h1= plot(handles.axes1, X1, Y1, 'r', X2, Y2, 'b');      % Kurven 1 & 2
h2= plot(handles.axes2, X3, Y3, 'c', X4, Y4, 'm');      % Kurven 3 & 4
pause(0.1);
 


Jetzt will ich die Teile einzeln gelöscht haben mit diesem Befehl:
Code:

delete(handles.axes1, h1);
 


Jedoch funktioniert das nicht, nur wenn ich dieses Programm komplett ohne handles.axes Zuweisung mache.
Liegt es an der Syntax von delete? Finde die Lösung nicht.
_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 18.05.2010, 23:11     Titel:
  Antworten mit Zitat      
Hallo,

ich weiß ja nicht, was du nun eigtl. löschen willst. Allgemein wird der delete-Befehl aber nur mit einem Argument aufgerufen:

Code:


h1 weiß ja, zu welchem Koordinatensystem es gehört Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 20.05.2010, 12:57     Titel:
  Antworten mit Zitat      
Das dachte ich auch, dem ist leider nicht so, wieso auch immer....funktioniert nur, wenn ich vorangehend folgendes schreibe, oder komplett ohne Achsenzuweisung (wird jedoch benötigt):
Code:
axes(handles.axes1)


ansonsten:
Code:

Error using ==> delete
Invalid handle object.
 

_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 11.06.2010, 18:28     Titel:
  Antworten mit Zitat      
Ich habe immer noch dieses Problem und ich bekomme es nicht weg. Hat niemand eine Idee Lösung etc? Verstehe auch nicht den Grund. Liegt es daran weil ich mehre X Werte habe? Liegt es an der Schleife?
Ich würde gern das oben genannte programmieren, nur leider geht es nicht. Ich habe es bisher so gelöst, dass ich einfach vor allem

Code:
axes(handles.axes1)


schreibe und dann plottet es alles in das richtige KOS.
Jedoch habe ich nun weiter unten eine andere Funktion die durch diesen "Pfusch" nicht funktioniert.
_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.06.2010, 19:35     Titel:
  Antworten mit Zitat      
Hallo,

ich zumindest werde dir wohl nur helfen können, wenn du ein kleines, komplettes, lauffähiges Beispiel zeigen kannst, bei dem dein Problem auftritt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 13.06.2010, 15:11     Titel:
  Antworten mit Zitat      
Hallo Harald,
Ich hab jetzt eine kleine Version meines Programmes gemacht und ich verstehe Matlab einfach nicht mehr. Das speichert sich irgendwas im Hintergrund, aber verstehe den Sinn nicht! Schwierig ist auch das Problem zu beschreiben. Im Anhang ist das File. Die obere Version funktioniert immer wenn ich den Befehl vor die Funktion schreibe, was eigentlich Pfusch ist und ich so nicht haben möchte.
Darunter findet man die meines Erachtens richtige Vartiante. ABER, sie funktioniert nur so wie sie gerade will. Lässt man es in axes 2 darstellen und schreibt danach kurz alles auf axes 1 um funktioniert es. Schließt man daraufhin Matlab und öffnet das selbe unveränderte File wieder funktoniert es nur noch auf axes 2 nicht auf axes 1 (oder eben anderes herum).
Ich hoffe man versteht was ich meine. Das Problem liegt nicht an meiner Matlab Version, habe es mit 2007, 2009 und 2010 das gleiche problem.

Schonmal Danke fürs reinschauen.


Achso der Fehler:
Code:

??? Error using ==> delete
Invalid handle object.

Error in ==> test>pushbutton1_Callback at 126
        delete(arm1,arm2);

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> test at 42
    gui_mainfcn(gui_State, varargin{:});

Error in ==> @(hObject,eventdata)test('pushbutton1_Callback',hObject,eventdata,guidata(hObject))

 
??? Error while evaluating uicontrol Callback
 

Das gleiche Problem tritt auch auf, wenn ich eine Checkboxabfrage mit dem Befehl "get" mache. Dann steht eben als Fehler "get" statt "delete". Vermutlich verbocke ich was mit den Übergabe-handels.

test.fig
 Beschreibung:
GUI

Download
 Dateiname:  test.fig
 Dateigröße:  5.88 KB
 Heruntergeladen:  347 mal
test.m
 Beschreibung:
M-File

Download
 Dateiname:  test.m
 Dateigröße:  4.2 KB
 Heruntergeladen:  460 mal

_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.06.2010, 17:26     Titel:
  Antworten mit Zitat      
Hallo,

das Problem lag in der falschen Anwendung von hold. Als du den Plot zu arm löschen wolltest, gab es ihn schon gar nicht mehr.

So gehts:
Code:
for c=1:5:size(t_,2)
       
        arm1= plot(handles.axes1,[    0   a_(1,c)], [   0    a_(2,c)], 'b','Linewidth',3);  
        hold(handles.axes1, 'on')
        arm2= plot(handles.axes1,[a_(1,c) b_(1,c)], [a_(2,c) b_(2,c)], 'g','Linewidth',2);    % Arm 2
        axis(handles.axes1,[-5 5 -5 5]);
        pause(0.01);
        delete(arm1, arm2);
        end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 14.06.2010, 20:29     Titel:
  Antworten mit Zitat      
Hmm... stimmt. Super, vielen vielen Dank für den Tip. Da hab ich das wohl alles falsch interpretiert und den Fehler an der falschen Stelle gesucht.
Eine Sache hätte ich da noch wieso ich überhupt darauf gekommen bin, ich habe ein Update gemacht und wieder ein Problem mit dem delete Befehl.
Vielleicht ist es wieder nur ne Kleinigkeit?

test.m
 Beschreibung:
M-File

Download
 Dateiname:  test.m
 Dateigröße:  4.34 KB
 Heruntergeladen:  382 mal
test.fig
 Beschreibung:
GUI

Download
 Dateiname:  test.fig
 Dateigröße:  6.4 KB
 Heruntergeladen:  378 mal

_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.06.2010, 15:27     Titel:
  Antworten mit Zitat      
Hallo,

ich lasse deine GUI laufen, klicke drin rum, keine Fehlermeldung.
Wann passiert der Fehler bzw. das unerwünschte Verhalten, und was ist es?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Dionysos
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 64
Anmeldedatum: 16.09.09
Wohnort: ---
Version: R2011a
     Beitrag Verfasst am: 20.06.2010, 09:56     Titel:
  Antworten mit Zitat      
Achso ganz vergessen, sry. Wenn das System am bewegen ist und man betätigt dann den Reset-Button. Ich hab in meinem Programm eine Rundeneingabe und wenn man da eben eine zu große Zahl eingegeben hat, damit man einen Reset-Button hat um nicht alles neu zu starten. Dann erscheint der obige Fehler. Vermutlich normal da man die Schleife unterbrechen will.
_________________

Dionysos
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.