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

Zwei Y-Achsen bei 4 Funktionen Plotten

 

ymscih
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2014, 17:03     Titel: Zwei Y-Achsen bei 4 Funktionen Plotten
  Antworten mit Zitat      
Hallo,

für eine Hausarbeit würde ich gern Plots erstellen via :

Code:
fplot('M_b1', [0 0.035])
hold on
grid on
fplot('M_b2', [0.035 0.065])
xlim ([0 0.065])

fplot('d_min1', [0 0.035])
hold on
grid on
fplot('d_min2', [0.035 0.065])
xlim ([0 0.065])


und

Code:
fplot('M_b1', [0 0.03])
hold on
grid on
fplot('M_b2', [0.03 0.135])
fplot('M_b3', [0.135 0.165])
xlim ([0 0.165])

fplot('d_min1', [0 0.03])
hold on
grid on
fplot('d_min2', [0.03 0.135])
fplot('d_min3', [0.135 0.165])
xlim ([0 0.165])


Es handelt sich im Genauen um Biegemomente (M_b) und Mindestwellendurchmesser (d_min) bei der Auslegung eines Getriebes.
Diese sind in Bereiche unterteilt einmal in zwei Bereiche, beim zweiten Plot in drei Bereiche.

Nun habe ich folgendes Problem, ich würde gern die zwei/drei M_b Funktionen auf der linken Y-Achse bestimmen und die zwei/drei d_min Funktionen auf der rechten Y-Achse.

Ich hab schon etwas rumgeforscht und bin aber nur auf plotyy gestoßen und das funktioniert bei mir leider garnicht ...
Hab auch nicht viel Ahnung von Matlab, benutze es erst seit einigen Tagen

Wäre super wenn mir Jemand helfen könnte,
danke schonmal Smile

lG
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 19:57     Titel:
  Antworten mit Zitat      
Hallo,

Eine Möglichkeit:
Code:
x1  = 0:0.001:0.035;
x2  = 0.035:0.001:0.065;
x   = [x1, x2];

M_b1    = x1.^2;
M_b2    = x2.^3;

d_min1  = x1;
d_min2  = 2*x2;

plotyy(x, [M_b1, M_b2], x, [d_min1, d_min2])

Ich weiß nicht, ob man die Funktionen im Graphen ab 0.035 anders färben kann. Als Alternative kann ich eine Änderung des Hintergrundes anbieten: http://www.gomatlab.de/2d-plot-absc.....nfaerben-t4895.html#17373

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2014, 20:32     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Antwort,
allerdings sieht der Plot so aus (1. Plot)
es sollte aber eher so aussehen, nur das ich eben rechts die y-Achse für d_min hab (2. Plot)

ich hab mit deinem code etwas rumexperimentiert aber komme leider auf keinen Grünen Zweig :/

lg

1.fig
 Beschreibung:
2. Plot

Download
 Dateiname:  1.fig
 Dateigröße:  4.9 KB
 Heruntergeladen:  407 mal
2.fig
 Beschreibung:
1. Plot

Download
 Dateiname:  2.fig
 Dateigröße:  3.84 KB
 Heruntergeladen:  404 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 20:47     Titel:
  Antworten mit Zitat      
Was heißt rumexperimentiert? Was hast du versucht? Was hat nicht geklappt?

Da ich deine Funktionen nicht erraten konnte, habe ich im Beispiel einfach iwelche Funktionen eingesetzt. Ersetze diese doch mal durch deine Funktionen (Zeilen markiert).

Code:
x1  = 0:0.001:0.035;
x2  = 0.035:0.001:0.065;
x   = [x1, x2];

M_b1    = x1.^2;  %%
M_b2    = x2.^3;  %%

d_min1  = x1;  %%
d_min2  = 2*x2;  %%

plotyy(x, [M_b1, M_b2], x, [d_min1, d_min2])


Grüße
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2014, 20:58     Titel:
  Antworten mit Zitat      
für x andere Werte eingesetzt ^^

die Funktionen sehen so aus (hab sie mal eingesetzt)

Code:
x1  = 0:0.001:0.035;
x2  = 0.035:0.001:0.065;
x   = [x1, x2];

M_b1    = sqrt(((M_Y1(x1))^(2) + (M_Z1(x1))^2));
M_b2    = sqrt(((M_Y2(x2))^2) + ((M_Z2(x2))^2));

d_min1  = 2.17 * (((M_v1 (x1) *1000) / (sigma_zul))^(1/3));
d_min2  = 2.17 * (((M_v2 (x2) *1000) / (sigma_zul))^(1/3));

plotyy(x, [M_b1, M_b2], x, [d_min1, d_min2])


meinst du so ?
Ich bekomme dann diese Fehlermeldung:

"??? Error using ==> mpower
Inputs must be a scalar and a square matrix."
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 21:08     Titel:
  Antworten mit Zitat      
Ich vermute, du möchtest die Elemente der Matrizen quadrieren, nicht die Matrix an sich? Dann musst du .^ statt ^ schreiben.

Man muss zw. Rechenoperationen von Matrizen/Vektoren und elementweisen Berechnungen unterscheiden.
http://www.mathworks.de/help/matlab.....vs-matrix-operations.html
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2014, 21:10     Titel:
  Antworten mit Zitat      
Matritzen ?
Das sind alles nur lineare Gleichungen .. oder versteh ich was falsch ^^ ?

edit: vllt zum Verständnis: Es sind 4 lineare Funktionen wobei die Funktionen mit dem Index 1 nur im ersten Intervall gültig sind und die mit dem Index 2 nur im zweiten Intervall

Die y-Achse der M_b Funktionen ist allerdings in Nm gegeben die der d_min Funktionen in mm. Hier könnte ich sie noch auf einer Achse beziffern, da es aber später so ist das M_b in einer anderen Größenordnung liegt als d_min wären zwei Y-Achsen von Vorteil

ps: danke dass du dich Meiner annimmst Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 21:22     Titel:
  Antworten mit Zitat      
Du verstehst was falsch. Das gehört am Anfang zum Programmieren aber dazu Very Happy

Lass das Bsp mal berechnen und schau dir im Workspace die Werte an.
x1 ist eine 1x36 double Matrix (ein Zeilenvektor; 36x1 wäre ein Spaltenvektor)
x2 ist 1x31
x ergibt sich aus diesen beiden Größen durch Aneinanderfügen in Zeile 3 zu einer 1x67 Matrix

M_b1 & d_min1 sind so groß wie x1, da davon abhängig, Rest qäquivalent.
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2014, 21:26     Titel:
  Antworten mit Zitat      
Ja ich hatte nie einen Kurs dazu ^^''

Danke, ich verstehs ... also bleibt mir nur übrig die Funktionen in "Zahlenform" zu schreiben ?
Ich habe es ja recht verschachtelt gemacht .. die Funktionen die ich plotten möchte sind ja von mehreren Funktionen abhängig und diese auch etc. etc.

Dachte ich könnte das iwie umgehen
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 21:30     Titel:
  Antworten mit Zitat      
Hast du es mit .^ statt ^ versucht?

ymscih hat Folgendes geschrieben:
also bleibt mir nur übrig die Funktionen in "Zahlenform" zu schreiben ?

Was meinst du damit?

Zitat:
Ich habe es ja recht verschachtelt gemacht .. die Funktionen die ich plotten möchte sind ja von mehreren Funktionen abhängig und diese auch etc. etc.

Poste doch mal ein lauffähiges Beispiel. In deinem letzten Code waren die M_Y, M_Z & M_v nicht bekannt.
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2014, 21:48     Titel:
  Antworten mit Zitat      
Habe ich versucht, bekomme ebenfalls eine Fehlermeldung.

vllt. besser, ich habe dir hier ne .zip hochgeladen, alle funktionen sind enthalten

hilft das weiter ?

1.zip
 Beschreibung:

Download
 Dateiname:  1.zip
 Dateigröße:  4.57 KB
 Heruntergeladen:  434 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 02.11.2014, 22:06     Titel:
  Antworten mit Zitat      
ymscih hat Folgendes geschrieben:
Habe ich versucht, bekomme ebenfalls eine Fehlermeldung.

Also in den hochgeladenen Dateien sind haufenweise Matrizenoperationen anstelle von elementweisen Berechnungen. Da überrascht es mich nicht, dass dir nach wie vor Fehler ausgegeben werden.

Ist dir der Unterschied zwischen ^ und .^ oder * und .* usw. denn klar?
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2014, 00:28     Titel:
  Antworten mit Zitat      
Naja kann mir vorstellen das .^ und .* die entsprechenden Elementenoperatoren sind.
Aber das war es auch ...
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 18.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 03.11.2014, 01:11     Titel:
  Antworten mit Zitat      
Ja. Und diese musst du in deinen Funktionen verwenden, da du nicht Matrizen miteinander multiplizieren, dividieren oder potenzieren möchtest, sondern deren einzelne Elemente.

Bsp. um den Unterschied zu zeigen:
Code:
A = 1:10;
B = A;

C = A.*B;
% D = A*B;  % Fehler, da Matrix-Dimensionen nicht passen
E = A*B';
F = A'*B;

G = [1, 2, 3;
    4, 5, 6;
    7, 8, 9];

H = G.^2;    % entspricht G(1)^2, G(2)^2, G(3)^2 usw
I = G ^2;  % entspricht G*G



Ist dir klar, was es mit den Matrizen (hier Vektoren) in deinem Beispiel auf sich hat?

Code:
x1  = 0:0.001:0.035;

M_b1    = x1.^2;
d_min1  = x1;

x1 hat wie geschrieben 1x36 Elemente. M_b1 und D_min1 haben ebenso viele Elemente, weil sie mittels x1 berechnet werden. Das Element x1(1) wird genutzt um M_b1(1) und D_min1(1) zu berechnen, das Element x1(2) um M_b1(2) und D_min1(2) zu berechnen uswusf. (Jedem x wird ein y=f(x) zugewiesen.)
Im Grunde hat man also je 36 mal M_b1 und D_min1 berechnet. Dadurch dass diese Werte aber in Vektoren zusammengefasst sind, geschieht dies "im Code sichtbar" je nur ein mal.


Ersetz in deinem Code mal die entsprechenden /, * und ^ durch ./, .* und .^

Wenn dann noch Fehler auftreten, schauen wir weiter.

Edit: Hab mittels Notepad++ (Strg-Shift-f) alle /, * und ^ ersetzt, dann erzeugt
Code:
x1  = 0:0.001:0.035;
x2  = 0.035:0.001:0.065;
x   = [x1, x2];

sigma_zul = 1;

M_b1    = sqrt(((M_Y1(x1)).^(2) + (M_Z1(x1)).^2));
M_b2    = sqrt(((M_Y2(x2)).^2) + ((M_Z2(x2)).^2));

d_min1  = 2.17 * (((M_v1 (x1) *1000) / (sigma_zul)).^(1/3));
d_min2  = 2.17 * (((M_v2 (x2) *1000) / (sigma_zul)).^(1/3));

plotyy(x, [M_b1, M_b2], x, [d_min1, d_min2])

folgenden Graph:


Grüße,
Seb
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
ymscih
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 01.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.11.2014, 12:43     Titel:
  Antworten mit Zitat      
Ahhhh wie gut Very Happy

Vielen Vielen Dank, ich werde es in Zukunft so handhaben Smile
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.