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

plotyy darstellung nicht korrekt

 

savenius
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2010, 21:35     Titel: plotyy darstellung nicht korrekt
  Antworten mit Zitat      
Hallo,

habe Probleme bei plotyy mit der Achsenskalierung Sad
Ich würde gerne auf der einen Seite den Strom und auf der anderen Seite die Leistung darstellen.
Die X-Achse (die Spannung) sollte gleich bleiben, aber es sieht so aus als würden die X-Werte nicht richtig dargestellt.
Zusätzlich würde ich auch die Y-Achsen richtig skalieren.
Ich krieg das so nicht hin. Crying or Very sad
Was mache ich falsch?

Code:

U= (0:0.01:50)';

% Kurzschlussstrom ik = iph
Iph=1.3;
% Sperrsättigungsstrom is
Is=10e-10;
% Temperaturspannung ut
Ut=25.7e-3;


I=Iph-Is*exp(U/Ut)-Is;

P=I.*U;

% Anzeige des Graphen
plotyy(U,I,U,P);
% Gitter anzeigen
grid off;
% Bezeichnung der Kurve
% legend('I=f(U)');
% Titel der Kurve
title('I-U-Kennlinie einer idealen Solarzelle ');
% Beschriftung y-Achse (Ordinate)
ylabel('Zellenstrom in [A]');
% Beschriftung x-Achse (Abszisse)
xlabel('Spannunng U in [V]');
% Festgesetzte Achsenskalierung [xmin, xmax, ymin, ymax]
axis([0, 1, 0, 1.5, 0, 1, 0, 10]);
 


Gruß savenius Very Happy
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 05.01.2010, 14:20     Titel:
  Antworten mit Zitat      
Hallo,

plotyy liefert (u.a.) die Handles für die zwei Achsenkreuze zurück, die übereinanderliegen. axis (ohne Angabe des Handles) manipuliert nur eine davon.
Folgendes setzt beide Achsen gleich:
Code:
U= (0:0.01:50)';

% Kurzschlussstrom ik = iph
Iph=1.3;
% Sperrsättigungsstrom is
Is=10e-10;
% Temperaturspannung ut
Ut=25.7e-3;


I=Iph-Is*exp(U/Ut)-Is;

P=I.*U;

% Anzeige des Graphen
hAxes = plotyy(U,I,U,P);
% Gitter anzeigen
grid off;
% Bezeichnung der Kurve
% legend('I=f(U)');
% Titel der Kurve
title('I-U-Kennlinie einer idealen Solarzelle ');
% Beschriftung y-Achse (Ordinate)
ylabel('Zellenstrom in [A]');
% Beschriftung x-Achse (Abszisse)
xlabel('Spannunng U in [V]');
% Festgesetzte Achsenskalierung [xmin, xmax, ymin, ymax]
axis(hAxes, [0, 1, 0, 1.5, 0, 1, 0, 10]);
 


Hoffe, das hilft schon mal weiter. Wenn die y-Achsen unterschiedlich skaliert werden sollen, muss axis natürlich zweimal aufgerufen werden, einmal mit hAxes(1), einmal mit hAxes(2).

Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
savenius
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 29.12.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2010, 17:43     Titel:
  Antworten mit Zitat      
Hallo Titus,

dein Tipp war cool Cool . Konnt dadurch meine Gehirnwindung etwas auflösen Laughing . Danke nochmals.
Es funktioniert besser mit
Code:

anstelle
Code:
axis(hAxes, [0, 1, 0, 1.5, 0, 1, 0, 10]);

Darüberhinaus hab ich wie verteufelt die beiden Y-Achsen richtig zu skalieren versucht. Jedenfalls ist mir das mit
Code:
set(hAxes(1),'YLim',[0  3])

gelungen. Aber damit muß man aufpassen, sonst würfelt es die Skalierung der X-Achse durcheinander. Ich denke, das ist eine schlechte Lösung von mir. Vielleicht weißt Du da ne bessere Möglichkeit?

So sieht mein verbesserter code jetzt aus.
Code:
U= (0:0.001:0.57)';

% Kurzschlussstrom ik = iph
Iph=2.98;
% Sperrsättigungsstrom is
Is=10e-10;
% Temperaturspannung ut
Ut=25.7e-3;

I=Iph-Is*exp(U/Ut)-Is;

P=(U.*I);

% Anzeige des Graphen
hAxes=plotyy(U,I,U,P);
% Gitter anzeigen
grid on;
% Bezeichnung der Kurve
% legend('I=f(U)');
% Titel der Kurve
title('I-U-Kennlinie einer idealen Solarzelle ')

% Festlegung der ersten Y-Achse
axes(hAxes(1));
% Beschriftung der ersten Y-Achse (Ordinate)
ylabel('Zellenstrom I in [A]')
set(hAxes(1),'YLim',[0  3])

% Festlegung der zweiten Y-Achse
axes(hAxes(2));
% Beschriftung der ersten Y-Achse (Ordinate)
ylabel('Leistung P in [W]')
set(hAxes(2),'YLim',[0  1.5])


% Beschriftung X-Achse (Abszisse)
xlabel('Zellenspannung U in [V]')



Gruß savenius Shocked
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 05.01.2010, 17:53     Titel:
  Antworten mit Zitat      
Hallo,

nix dran auszusetzen. Außer, dass ich
Code:
% Festlegung der ersten Y-Achse
axes(hAxes(1));
% Beschriftung der ersten Y-Achse (Ordinate)
ylabel('Zellenstrom I in [A]')
set(hAxes(1),'YLim',[0  3])
 


durch

Code:
% Festlegung der ersten Y-Achse
% Beschriftung der ersten Y-Achse (Ordinate)
ylabel(hAxes(1), 'Zellenstrom I in [A]')
set(hAxes(1),'YLim',[0  3])
 


genauso für Achse 2, aber das ist (fast) nur Kosmetik ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Red fox
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 16.07.09
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 05.01.2010, 22:02     Titel:
  Antworten mit Zitat      
Moin zusammen,

habe grad ebenfalls ein Problem mit der Skalierung. Nur möchte ich ein plotyy verwenden bei dem beide Y-Achsen exakt die gleiche Skalierung haben und das möchte ich in folgenden Code einbinden:

Code:

[AX,H1,H2] = plotyy (pr*1.1,nvp40,pr*1.1,nvp100,'semilogy');
       set(AX(1),'YColor',[1 0 0]);                            
       set(AX(2),'YColor',[0 0 1]);
       set(get(AX(1),'Ylabel'),'String','\fontsize{11} 1');
       set(get(AX(2),'Ylabel'),'String','\fontsize{11} 2');
       set(H1,'LineWidth',1.25,'Color',[1 0 0],'LineStyle','-','Marker','x','MarkerSize',8);
       set(H2,'LineWidth',1.25,'Color',[0 0 1],'LineStyle',':','Marker','o','MarkerSize',8);
       xlabel('\fontsize{11}pressure [N/mm²]');
       title({['\fontsize{12} 3'});
       
       grid on;
 


Möglich, dass ich mal wieder den Wald vor lauter Bäumen nicht sehe...

Wie kann ich bei einem plotyy einen Graphen z.B. den der linken Seite skalierten ersetzten und den andere beibehalten? Wenn ich durch eine IF Schleife eine Seite ersetzten will (hold on, damit Werte beibehalten werden) schreibt er diesen zwar neu ins Diagramm, der alte bleibt aber erhalten und somit habe ich dann drei...

Gruß

Red Fox
Private Nachricht senden Benutzer-Profile anzeigen
 
Red fox
Forum-Anfänger

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 16.07.09
Wohnort: Thüringen
Version: ---
     Beitrag Verfasst am: 08.01.2010, 10:41     Titel:
  Antworten mit Zitat      
Screenshot, zeigt die Achsenskalierung eines plotyy. Die Skalierung beider Achsen soll identisch sein über den ganzen Diagrammbereich, das ist sie auf einer Seite aber nicht, sie reicht nur über den Bereich in dem sich der betreffende Graph im Diagramm befindet.

Gruß
Red Fox

plotyy.pdf
 Beschreibung:

Download
 Dateiname:  plotyy.pdf
 Dateigröße:  25.56 KB
 Heruntergeladen:  692 mal
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.