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

surfaceplot und anschließend eine zusätzliche Achse einfü

 

Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.07.2011, 13:38     Titel: surfaceplot und anschließend eine zusätzliche Achse einfü
  Antworten mit Zitat      
Hi,

vielleicht kann jemand von euch mir helfen. In einem axes einer gui plotte ich mit surface eine FFT. Anschließend führe ich mit shading('interp') eine Interpolation durch, damit aus der 3D eine 2D Darstellung wird. Anschließend wird diese Darstellung transparent mit alpha. Nun möchte ich über die 2D Darstellung zusätzlich mehrere Graphen plotten. Das klappt nur, wenn ich dessen Datenbereich "Ywerte" (z.B. eine Drehzahl durch Division von 60 in eine Frequenz umrechne) entsprechend anpasse. Gib es eine Möglichkeit eine zusätzliche y Achse auf der linken oder rechten Seite einzufügen? Damit die reale Drehzahl etc. geplottet wird und nicht der Betrachter selber mit 60 Multiplizieren muss, um sich die Drehzahl zu bestimmen.

Meines Erachtens würde dies wesentlich besser aussehen.

MfG


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 12.07.2011, 01:52     Titel: Re: surfaceplot und anschließend eine zusätzliche Achse ei
  Antworten mit Zitat      
Hallo Gast,

Meinst Du die PLOTYY Funktion?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.07.2011, 08:56     Titel:
  Antworten mit Zitat      
Hallo Jan,

plottyy hatte ich schon versucht, kann ich aber nicht benutzen, da der surface ein 3D Plot (ein Plot eines Spektrumgrams) ist. Über den Umweg durch shading wird nur die Draufschicht auf den 3D plot betrachtet. Falls es doch damit gehen sollte, müsste du mir mal helfen.

MfG
 
Georg J
Forum-Century

Forum-Century



Beiträge: 113
Anmeldedatum: 22.06.11
Wohnort: ---
Version: R2008a
     Beitrag Verfasst am: 12.07.2011, 22:16     Titel:
  Antworten mit Zitat      
Hallo,

Warum machst du das Spektrogramm mit Surf, wenn du nur eine 2D-Grafik brauchst?

Ich verwende für Spektrogramme lieber den Befehl
Code:


Der ist viel schneller und vielleicht wäre damit dein Problem auch sofort gelöst.

Gruss, Georg
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.07.2011, 19:45     Titel:
  Antworten mit Zitat      
Hi Georg,

ich habe mir die Befehle image und imagesc angeschaut. Leider funktioniert bei diesen die Interpolation nicht so schön im Vergleich zu surface.
Plotyy habe ich auch noch mal probiert, indem ich einfach auf der ersten y Achse ein Punkt bei Null eingefügt hatte. Nur wenn ich auf die zweite y Achse zu greifen will (Beschriften, Skalierung), klappt es nicht. Hat jemand von euch eine Lösung.

Code:


Plot_fft = surface(T_Rueckgabe,F,20*log(abs(B)));
shading('interp');
set(get(gca,'XLabel'),'String','Messzeit [s]');
set(get(gca,'YLabel'),'String','Frequenz [Hz]');
alpha(Plot_fft,0.45);
axes(GUIData.axes1);
et(GUIData.axes1,'NextPlot','add');
[AX H1 H2] = plotyy(Zeitkanal,0,Zeitkanal,[Kanal1 Kanal2]);

set(H2,'String','Drehzahl [1/min]','Ylim',[0 Wert]);
set(get(gca,'YLabel'),'String','Drehzahl [1/min]');
set(get(gca,YLim),[0 Wert]);

 


Falls ich statt plotyy ein plot benutze und mir eine "dritte" rechte y Achse wie auf matlab exchange file bei plotyyy beschrieben, ausserhalb der axes bastle könnte. Das hier ist nur ein Codeauszug davon. Wie könnte ich diesen Code umschreiben (da ich ihn nicht verstehe, damit ich mir einfach eine Labelachse auf der rechten axes seite einfüge). Dort kann ich ja da einfach die Einteilung der gewünschten y Achse vornehmen.

Code:

xxx = get(GUIData.axes1,'XLim');
cfig = get(gcf,'color');
pos = [0.1  0.1  0.7  0.8];
offset = pos(3)/5.5;
pos3=[pos(1) pos(2) pos(3)+offset pos(4)];
ax(3)=axes('Position',pos3,'box','off','Color','none','XColor','k','YColor','r','xtick',[],'xlim',xxx,'yaxislocation','right');
set(get(ax(3),'ylabel'),'string','Drehzahl');
 


Für jede Hilfe wäre ich dankbar.
 
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 - 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.