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

Ein Plot, mehrere Kurven mit mehreren Definitionsbreichen

 

GastXYZ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2012, 01:38     Titel: Ein Plot, mehrere Kurven mit mehreren Definitionsbreichen
  Antworten mit Zitat      
Hallo Leute,

Viel Text, ich bitte aber trotzdem darum, es durchzulesen, für mich sehr wichtig und für Matlab-Kenner sicher eine Kleinigkeit!
Ich brauche dringend Hilfe. Ich sollte in einer Woche meine Bachelorarbeit abgeben, hänge aber noch an einer Kleinigkeit, die ich gerne mit reinbringen würde, und erhoffe mir Hilfe. Wie das immer so ist, ich hatte im zweiten Semester mal Matlab, aber das ist schon sooooo lange her, und seitdem hatte ich nix mehr damit zu tun. Und jetzt muss ich doch wieder drauf zurückgreifen. Es ist ein tolles Programm, das weiß ich, aber wenn mans nicht braucht, vergisst man halt alles. Wie gesagt, ich erhoffe mir hier Hilfe, ohne riesen Matlab-Nachhilfe-Stunden nehmen zu müssen! Folgendes Problem, ich versuche es möglichst simpel zu beschreiben:
Ein Außenwellenring, sinusförmig, mit jeweils 6 Hoch- und Tiefpunkten, symmetrisch, Hochpunkte jeweils 60° zueinander versetzt.
Innen 8 Kolben, sternförmig zueinander angeordnet, Winkel dazwischen 45°, auch symmetrisch. Am Ende der Kolben Rollen, die gegen den Wellenring drücken. So ergibt sich durch das Sinusprofil der Welle neben der Axialkraft aus den Kolben auch eine Tangentialkraft in Richtung des Wellenrings.
Sagen wir mal der Außenwellenring dreht sich rechts herum, dann liegt, sobald der Hochpunkt des Wellenrings von rechts nach links passiert ist, ein bestimmter Druck an, bis er am Tiefpunkt des Rings angekommen ist. Von Tiefpunkt bis Hochpunkt ist der Kolben drucklos.
Das ganze ist jetzt mathematisch zu beschreiben. Das ist weniger das Problem. Mein Problem ist, das in Matlab in einen Plot zu kriegen. Ich habe mal versucht, das mit meinen wirklich sehr begrenzten Fähigkeiten zu machen, aber ich kriege immer den Fehler, ich solle gleich lange Vektoren angeben.
Hier der Code:

Code:

x1 = linspace(0,(1/12)*pi,10000)
x2 = linspace((2/12)*pi,(3/12)*pi,10000)
x3 = linspace((4/12)*pi,(5/12)*pi,10000)
x4 = linspace((6/12)*pi,(7/12)*pi,10000)
x5 = linspace((8/12)*pi,(9/12)*pi,10000)
x6 = linspace((10/12)*pi,(11/12)*pi,10000)
y1 = sin(6*t)
y2 = sin(6*t-pi/4)
y3 = sin(6*t-pi/2)
y4 = sin(6*t-3*pi/4)
y5 = sin(6*t-pi)
y6 = sin(6*t-5*pi/4)
y7 = sin(6*t-3*pi/2)
y8 = sin(6*t-7*pi/4)
plot(x1,y1,x2,y1,x3,y1,x4,y1,x5,y1,x6,y2,x1,y2,x2,y2,x3,y2,x4,y2,x5,y2,x6,y3,x1,y3,x2,y3,x3,y3,x4,y3,x5,y3,x6,y3,x1,y4,x2,y4,x3,y4,x4,y4,x5,y4,x6,y4,x1,y5,x2,y5,x3,y5,x4,y5,x5,y5,x6,y5,x1,y6,x2,y6,x3,y6,x4,y6,x5,y6,x6,y6,x1,y7,x2,y7,x3,y7,x4,y7,x5,y7,x6,y7,x1,y8,x2,y8,x3,y8,x4,y8,x5,y8,x6,y8)
 


Die Idee dahinter: Ich habe 8 Kurven, y1 bis y8. Diese von 0 bis 2pi Plotten klappt einwandfrei. Allerdings definiere ich mir dann noch meine 6 x-Vektoren, von 0 bis (1/12)*pi, von (2/12)*pi bis (3/12)*pi und so weiter, eben die Zeitpunkte "unter Druck". Diese versuche ich, für jede Kurve zu Plotten, also die Kurve y1 im Zeitbereich x1, x2 ... x6; Kurve y2 in x1, x2, ... x6 und so weiter bis y8. Mathematik dahinter ist klar, nur ins Matlab krieg ichs nicht. Ich wär wirklich unendlich dankbar, wenn ihr mir da weiterhelfen könntet!!!
Das Schmankerl zum Abschluss wäre dann noch eine Summenkurve von y1 bis y8 im Bereich von 0 bis 2pi.
Wie gesagt, wäre unendlich dankbar, wenn mir jemand helfen könnte, da die Zeit doch drängt!!!!!! Im Fall der Fälle dann gerne auch per Mail/Skype oder was weiß ich Wink vielen Dank!!!!

Liebe Grüße


Harald
Forum-Meister

Forum-Meister


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

der Code läuft so erstmal nicht, da t nicht gegeben ist.

Was soll gemacht werden? Sollen alle x-Vektoren jeweils für t eingesetzt werden? Warum dann nicht alle x-Werte auf einmal?

Leider bin ich mir nicht sicher, ob ich verstehe, was du machen willst.

Hier ist mein Versuch der Interpretation:
Code:
hold all
for I=0:2:10
    x = linspace(I*pi/12, (I+1)*pi/12, 10000);
    for J = 0:7
        y = sin(6*x - J*pi/4);
        plot(x,y)
    end  
end
 


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2012, 20:15     Titel:
  Antworten mit Zitat      
Hi Harald,

vielen Dank mal für die Antwort. Ich hab mal versucht, das etwas deutlicher zu machen. Allerdings hier mit 10 Kolben und 8 Hochpunkten.
Das was du gemacht hast, ging schon stark in die richtige Richtung, aber es trifft es noch nicht ganz. Ich versuche es mal zu beschreiben.
Zum Zeitpunkt t=0 startet die Scheibe blau rechtsherum zu drehen, vom Zeitpunkt t=0 bis der Kolben 1 am Tiefpunkt T1 angekommen ist, ist Druck auf dem Kolben. die Scheibe dreht weiter, von T1 bis H2 ist kein Druck auf dem Kolben. Von H2 bis T2 ist dann wieder Druck drauf, usw. usw. Also pauschal bei der Drehung der Scheibe nach rechts gilt für alle Kolben: von Hochpunkt bis Tiefpunkt ist Druck auf dem Kolben, von Tiefpunkt bis Hochpunkt ist der Kolben drucklos.
Vom Zeitpunkt t=0 vergeht jetzt etwas Zeit bis der Hochpunkt H1 beim Kolben 2 ankommt. Dann hat man die selbe Kurve wie beim Kolben 1.
Durch die 10 Kolben hat man eine Verschiebung von 36°. Also hat man für eine Umdrehung 2*pi für jeden Kolben eine Sinuskurve mit 8 Hoch- und Tiefpunkten. Die Kurven sind jeweils um 36 Grad zueinander verschoben.
Zu Zeichnen wären jetzt die 8 Kurven, die zueinander verschoben sind. Das ist wieder nicht das Problem:
Code:

y1 = sin(6*t)
y2 = sin(6*t-1*pi/5)
y3 = sin(6*t-2*pi/5)
y4 = sin(6*t-3*pi/5)
y5 = sin(6*t-4*pi/5)
y6 = sin(6*t-5*pi/5)
y7 = sin(6*t-6*pi/5)
y8 = sin(6*t-7*pi/5)
y9 = sin(6*t-8*pi/5)
y10 = sin(6*t-9*pi/5)
 

Jetzt sollen aber NUR DIE BEREICHE UNTER DRUCK geplottet werden. Also von der Kurve des ersten Kolbens die 22,5° von Hochpunkt 1 bis Tiefpunkt 1, die nächsten 22,5° von Tiefpunkt 1 bis Hochpunkt 2 nicht, die nächsten 22,5° sollen dann wieder geplottet werden...
Dasselbe dann für jeden Kolben, mit dem korrekten Versatz zum ersten.

Ist das irgendwie verständlicher mit der Zeichnung?
Vielen Dank auf jeden Fall für die Mühe!!! Grüße

beispiel.jpg
 Beschreibung:

Download
 Dateiname:  beispiel.jpg
 Dateigröße:  94.68 KB
 Heruntergeladen:  703 mal
 
Harald
Forum-Meister

Forum-Meister


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

ich verstehe wirklich nicht, welcher Bereich nun für was geplottet werden soll. Aber warum passt du meinen Vorschlag nicht entsprechend an?

Falls dir das nicht möglich ist: welche Kurve soll nun in welchem Bereich geplottet werden?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2012, 21:04     Titel:
  Antworten mit Zitat      
Hi,

ja ich merke auch dass es mega schwer ist, das zu erklären. Kann man das Bild öffnen? Versuch einfach mal, dir das bildlich vorzustellen, wenn die Scheibe rechtsherum eine volle Umdrehung macht. Dabei soll für jeden Kolben von Kolben 1 bis Kolben 10 genau Die Bereiche gezeichnet werden, bei denen der jeweilige Kolben unter Druck ist, also von H1 zu T1, von H2 zu T2 und so weiter.

Dabei müssen die 10 Sinuskurven von Kolben 1 zu Kolben 10 zueinander verschoben sein, und jeweils 22,5Grad der Kurve müssen sichtbar sein (die wo der Kolben unter Druck ist) und dann 22,5Grad wieder nicht (Kolben drucklos) ... das ganze für 360Grad.

Ist das so klar geworden?
Grüße
 
Harald
Forum-Meister

Forum-Meister


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

ich kann nur die Frage wiederholen: warum passt du den Code nicht nach deinen Bedürfnissen an?

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.07.2012, 22:28     Titel:
  Antworten mit Zitat      
Hi,

versuche ich die ganze Zeit, kriege ich aber nicht hin ... ich arbeite dran!

Grüße
 
GastXYZ

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2012, 10:18     Titel:
  Antworten mit Zitat      
Hi Harald,

nachdem ich gestern den schönen Samstag Abend mit 0 Ergebnis verbracht habe, und etwas geknickt bin, versuche ich noch einen letzten Anlauf. Ich habe eine Beschreibung, die es hoffentlich besser trifft:

Zu plotten ist im Bereich von 0 bis 6*PI.
Die Grundkurve ist y=sin(8x). Diese ist zu plotten von 0° bis 22,5° (PI/Cool, von 22,5° bis 45° (PI/4) nicht, von 45° (PI/4) bis 67,5° (3*PI/Cool ist sie wieder zu plotten, von 67,5° bis 90° (PI/2) wieder nicht... und so weiter bis 6*PI --> im Prinzip sind also immer nur die aufsteigenden Flanken des Sinus zu zeichnen, von Tiefpunkt bis Hochpunkt.
Ist diese unterbrochene Grundkurve erstellt, muss sie "kopiert und verschoben" werden, sodass sich insgesamt 10 Kurven ergeben, die jeweils um 36° zueinander verschoben sind. Anders gesagt, man hat 10 man die selbe Kurve, allerdings verschiebt sich der Startpunkt um jeweils 36°.
Und als allerletztes bräuchte ich dann eben noch in dem Plot die Summenkurve über die 10 unterbrochenen Kurven. Das Bauchgefühl sagt, es ist eine gerade, ich hoffe es Very Happy

Ich hoffe jetzt ist zu verstehen was ich die ganze Zeit gemeint habe Very Happy sonst bin ich nämlich aufgeschmissen! Vielen Dank!!

Beste Grüße
 
Harald
Forum-Meister

Forum-Meister


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

nun sind ja mal ein paar neue Dinge dabei. Bis jetzt war nie die Rede von [0, 6*pi] oder von 36 Grad bzw. pi / 5.

Somit ein neuer Anlauf:
Code:
hold all
for I=0:2:30
    for J = 0:7
        x = linspace(I*pi/12 + J*pi/5, (I+1)*pi/12 + J*pi/5, 10000);
        y = sin(6*x - J*pi/4);
        plot(x,y)
    end  
end


Das muss jetzt noch nicht genau das sein, was du willst, aber es sollte nun echt kein Problem für dich sein, das entsprechend anzupassen. Wenn doch, dann bitte genau beschreiben, was daran nicht passt.

Für die Summenkurve musst du eben das Aufsummieren, was du haben möchtest.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2012, 17:00     Titel:
  Antworten mit Zitat      
Hi Harald,

es klappt! Soweit sogut, hier mal Quelltext:
Zitat:

for I=0:2:63
for J=0:1:9
x = linspace(I*pi/16+ J*pi/40, (I+1)*pi/16+ J*pi/40, 100)
y = sin(8*x - J*pi/5)
%xges = xges + x
%yges = yges + y
plot(x,y)
end
end


Vielen Dank mal soweit. Wenn du mir jetzt noch kurz sagen kannst, wie ich die Summenkurve bekomme, habe ich alles was ich brauche!
Wenn ich jetzt x_ges und y_ges mitberechnen lasse, bleibt der plot leer.
Woran liegt das? Wie kriege ich die Summenkurve hin?


Danke und Grüße
 
Harald
Forum-Meister

Forum-Meister


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

wenn du xges und yges nicht vordefiniert hast, bekommst du eine Fehlermeldung. Du solltest beide vorher auf 0 setzen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2012, 23:19     Titel:
  Antworten mit Zitat      
Hi Harald,

das mit dem vordefinieren hat funktioniert. leider hat mich das immer noch nicht zur Lösung geführt. Hier nochmal der aktuelle Code zum ausführen:

Code:

for I=0:2:63
    for J=0:1:9
        x = linspace(I*pi/16+ J*pi/40, (I+1)*pi/16+ J*pi/40, 100)
        y = abs(sin(8*x - J*pi/5))
        plot(x,y)
    end
end
 


Mit Summenkurve meine ich jetzt: angenommen, bei X-Wert 2 wird ein senkrechter Schnitt reingelegt, wird diese Kurve von 4 oder 5 verschiedenfarbigen Sinusviertelwellengeschnitten, einmal bei y=0, einmal bei y=0,2 einmal bei y=0,5 und einmal bei y=0,8.
Was ich jetzt mit Summenkurve meine ist, dass für X=2 der Punkt y=0+0,2+0,5+0,8 berechnet wird... klar was ich meine?
Beim linspace Befehl habe ich ja angegeben, dass ich 100 x-Werte haben möchte, für diese 100 x-Werte brauche ich dann die zugehörigen y-Werte aller Kurven aufsummiert.
Die Schleife habe ich bis jetzt aber leider noch nicht hingekriegt, kannst du mir da nochmal helfen?


Besten Dank und liebe Grüße!
 
Harald
Forum-Meister

Forum-Meister


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

meine Befürchtung ist, dass das etwas mühsam wird, da man ja eine Zuordnung finden muss, was zu was zusammengehört.

Eine Möglichkeit wäre: immer einen Vektor über die gesamte Spanne nehmen und die Einträge, die man nicht haben will, mit NaN ersetzen.
Dann nansum verwenden.

Beispiel: statt etwas wie
Code:
x1 = [1:4];
y1 = 4*x1;
x2 = [3:6];
y2 = x2.^2;
nimmt man sowas:
Code:
x1 = nan(1,6);
x1(1:4) = 1:4;
y1 = 4*x1;
x2 = nan(1,6);
x2(3:6) = 3:6;
y2 = x2.^2;
y = [y1; y2];
nansum(y)


Grüße,
Harald
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.