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 y-Achsen, eine linear, eine logarithmisch

 

J0ph33
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 18:05     Titel: 2 y-Achsen, eine linear, eine logarithmisch
  Antworten mit Zitat      
hiho

Ich will einen wie im Betreff beschriebenen Plot erstellen.
Mit plotyy bin ich bisher am logarithmisch gescheitert, beide Achsen sind lediglich linear.

Wahrscheinlich gibt's dafür eine recht einfache Lösung...

Gruß und Dank im Voraus.
Private Nachricht senden Benutzer-Profile anzeigen


DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 05.08.2011, 18:44     Titel:
  Antworten mit Zitat      
Du kannst doch die logar. Darstellung selber umrechnen. Bsp. für die Amplitude eines Signals...einmal linear und einmal in dB = log. Skalierung

Code:

plotyy(frequenz , amplitude, frequenz, 20*log10(amplitude))
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.08.2011, 18:47     Titel: Re: 2 y-Achsen, eine linear, eine logarithmisch
  Antworten mit Zitat      
Hallo J0ph33,

Ich glaube es gibt keinen direkten Befehl dafür.
Aber Du kannst in den Source von PLOTYY reinschauen, um zu sehen, wie man zwei AXES-Objekte übereinanderlegt. Der komplizierte Teil von PLOTYY betrifft das Finden gleicher YTick-Werte, aber das dürfte für die Kombination Log/Linear sowieso entfallen.

Also einfach zwei AXES Objekte erstellen, von denen eines einen durchschtigen Hintergrund hat.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2011, 20:01     Titel:
  Antworten mit Zitat      
Hallo,

das sollte gehen und relativ einfach sein:

Code:
[ax, h1, h2] = plotyy(x1, y1, x2, y2);
set(ax(2), 'YScale', 'logarithmic')


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

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.08.2011, 00:15     Titel:
  Antworten mit Zitat      
Korrektur:
log, nicht logarithmic.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
J0ph33
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2011, 01:07     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

das sollte gehen und relativ einfach sein:

Code:
[ax, h1, h2] = plotyy(x1, y1, x2, y2);
set(ax(2), 'YScale', 'log')


Grüße,
Harald


Das hat funktioniert! Smile

Lediglich die Beschriftung der y-Achse muss noch ein wenig getweakt werden, aktuell werden mehrere sehr große Werte (2000000000000 zB) am oberen Ende der Achse...ich hätte natürlich lieber die übliche Angabe der 10er-Potenzen

Das Umrechnen der Werte in mittels log(...), wie oben vorgeschlagen, würde wohl auch funktionieren, jedoch bleibt die Achsenbeschriftung dann linear.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.08.2011, 17:53     Titel:
  Antworten mit Zitat      
Hallo J0ph33,

Ja, genau ist das Problem bei PLOTYY: Es wird mit viel Mühe dafür gesorgt, dass die Y-Ticks der rechten und linken Y-Achsen an den gleichen Positionen stehen. Deshalb werden die Ticks manuell gesetzt. Im Nachhinein die Skala zu verändern sorgt deshlab für die genannten Effekte.

Deshalb hatte ich den anderen Vorschlag gemacht, bei dem einfach zwei AXES-Objekte erzeugt werden. Eine andere Methode wird in "help plotyy" beschrieben:
PLOTYY(X1, Y1, X2, Y2, @plot, @semilogy)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
J0ph33
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 05.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.08.2011, 19:00     Titel:
  Antworten mit Zitat      
hmm...die in der plotyy-help beschriebene Methode funktioniert prinzipiell, allerdings werden dann bis auf die Extrema keine Werte auf den Achsen angezeigt.

Was deinen Vorschlag angeht: Leider habe ich keine Ahnung wie man axes-Objekte erzeugt und benutzt Sad
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 - 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.