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

Kurve mit negativer Steigung erzwingen

 

MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 14:29     Titel:
  Antworten mit Zitat      
x muss sortiert sein und darf keine Mehfacheinträge (distinct) enthalten.
Private Nachricht senden Benutzer-Profile anzeigen


Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 14:50     Titel:
  Antworten mit Zitat      
Ok, jetzt verstehe ich deinen Code. Es geht jetzt zwar, aber auf die angepasste Steigung wird irgendwie keine Rücksicht genommen.

Kurz der Code und dann die Grafik

Code:

x = sort(x, 'descend');
 x = unique(x);
y = -1*x+1;
xx = min(x):1:max(x);
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
 


spline.png
 Beschreibung:

Download
 Dateiname:  spline.png
 Dateigröße:  20.14 KB
 Heruntergeladen:  653 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 14:59     Titel:
  Antworten mit Zitat      
OK, jetzt noch x und xx vertauschen, dann sollte das schick aussehen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 15:03     Titel:
  Antworten mit Zitat      
Du meinst im Plot?
Vectors must be the same lengths. Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 15:09     Titel:
  Antworten mit Zitat      
Ja, klar... Das wird schon. Very Happy x sind die Stützstellen, zwischen denen interpoliert wird und xx die Stellen, an denen das ganze ausgewertet werden soll.

Code:

xx=sort(daten, 'descend');
xx = unique(xx);
x=min(xx):1:max(xx);
y = -1*x+1;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 15:16     Titel:
  Antworten mit Zitat      
Vielen Dank Smile
Abgesehen davon, dass sich weniger Punkte auf der Geraden befinden, ist es das gleiche Ergebnis oder sehe ich das falsch?

Noch etwas: Entfernt man durch den Sortiervorgang nicht die Charakteristik der Kurve?

spline2.png
 Beschreibung:

Download
 Dateiname:  spline2.png
 Dateigröße:  17.48 KB
 Heruntergeladen:  644 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 15:20     Titel:
  Antworten mit Zitat      
Dann ist es wohl noch zu dicht...

Code:

xx=sort(daten, 'descend');
xx = unique(xx);
x=min(xx):4:max(xx);
y = -1*x+1;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
 


Die Charakteristik der Kurve bleibt von der Sortierung natürlich völlig unberührt, da die Charakteristik allein durch die Relation von x->y definiert ist, nicht aber von der Reihenfolge der Wertepaare.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 15:31     Titel:
  Antworten mit Zitat      
Jetzt dürfte es passen Smile
Der Plot ist lediglich verwirrend, da es wirklich eine Gerade ist. Plottet man yy, dann ist es korrekt Very Happy
Nur ein Problem gibt es noch, die Werte sind negativ. Ursprünglich waren es Höhenwerte, welche erhalten bleiben sollen.
Code:
yy = yy*-1

bringt die Sache zwar wieder ins Positive, aber leider ist die die Steigung natürlich wieder positiv.

spline3.png
 Beschreibung:

Download
 Dateiname:  spline3.png
 Dateigröße:  11.85 KB
 Heruntergeladen:  594 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 15:39     Titel:
  Antworten mit Zitat      
Du, wir machen später weiter. Ich habe hier kein Matlab. Das bläht den Thread nur unnötig auf.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 15:43     Titel:
  Antworten mit Zitat      
Kein Problem! Aber vielen Dank schon einmal. Wir sind kurz vor der Lösung Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 23.10.2012, 18:57     Titel:
  Antworten mit Zitat      
So, ich habe das jetzt selbst mal zeichnen lassen. Der Unterschied zu einer Regressionsgeraden ist marginal und es trifft meiner Meinung auch nicht den Verlauf der Messdaten.

Daher folgender Vorschlag:

Code:

x=linspace(0,30,300);
y=-0.01*x+0.02*cos(0.5*x);
plot(x,y)
 


Was hältst du davon?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 19:15     Titel:
  Antworten mit Zitat      
Bin beeindruckt! Das gefällt mir gut. Ich werde morgen nochmal ein paar andere Datensätze testen, aber es schaut super aus Smile
Danke für deine Expertise!

Ich habe jetzt mal im Anhang beide Ansätze als Kurve angehängt.

Eine Sache habe ich aber noch, wie komme ich wieder zu meinen alten Werten zurück, die sich im Bereich zwischen 140-150 bewegt haben?

spline4.png
 Beschreibung:
neue Version: y=-0.01*x+0.02*cos(0.5*x);

Download
 Dateiname:  spline4.png
 Dateigröße:  11.56 KB
 Heruntergeladen:  635 mal
spline3.png
 Beschreibung:

Download
 Dateiname:  spline3.png
 Dateigröße:  11.85 KB
 Heruntergeladen:  623 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 24.10.2012, 08:37     Titel:
  Antworten mit Zitat      
Jonadei hat Folgendes geschrieben:

Eine Sache habe ich aber noch, wie komme ich wieder zu meinen alten Werten zurück, die sich im Bereich zwischen 140-150 bewegt haben?


Indem du du den entsprechenden Definitionsbereich (x=daten) wählst. Es steht jetzt allerdings noch der wichtige Punkt der Regression aus.

Als Modellfunktion würde ich dann f(x)=y=a*x+b*cos(c*x) +d ansetzen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jonadei
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2012, 13:55     Titel:
  Antworten mit Zitat      
Sorry für die späte Rückmeldung.
Die Modellfunktion f(x)=y=a*x+b*cos(c*x) +d anstatt y=-0.01*x+0.02*cos(0.5*x)? Wie kommt man dorthin?
Private Nachricht senden Benutzer-Profile anzeigen
 
MaFam
Forum-Meister

Forum-Meister


Beiträge: 799
Anmeldedatum: 02.05.12
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 24.10.2012, 14:10     Titel:
  Antworten mit Zitat      
OK, ich dachte, das Prinzip der Regression wäre dir klar! Man muss doch, durch Wahl der freien Parameter, die Kurve an die Messdaten anpassen. Oder hast du das etwa gar nicht vor?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2, 3, 4  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 - 2024 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.