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

 

Jonadei
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 14.08.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2012, 10:49     Titel: Kurve mit negativer Steigung erzwingen
  Antworten mit Zitat      
Hallo an alle Mathematikprofis,

ich habe ein kleines Problem mit der Interpolationsfunktion von Matlab. Meine Daten sind einem starken Rauschen unterworfen, ich weiß aber, dass sie vom Wert her abnehmen müssen. Wenn ich allerdings interpoliere, wie stark auch immer, geht a) die Charakterisitik der Kurve verloren, also wie stark die negative Steigung wirklich ist, und b) gehts auch manchmal bergauf.

Gibt es die Möglichkeit eine Bedingung einzuführen, dass die interpolierte Kurve eine negative Steigung besitzen muss?

Danke und viele Grüße
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, 10:53     Titel:
  Antworten mit Zitat      
Hallo,

kannst du bitte eine Grafik dazu hochladen?

Grüße, Marc
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, 10:55     Titel:
  Antworten mit Zitat      
Gern

dilatex2_kroatien04_height_noise.png
 Beschreibung:

Download
 Dateiname:  dilatex2_kroatien04_height_noise.png
 Dateigröße:  15.27 KB
 Heruntergeladen:  752 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, 11:59     Titel:
  Antworten mit Zitat      
Diese Daten zu interpolieren macht keinen Sinn. Es läuft daher auf Approximation hinaus. Welchen schematischen Kurvenverlauf (Modellfunktion) hast du dir denn vorgestellt? Wenn das klar ist, kann man zusätzliche Bedingungen, wie beispielsweise eine negative Steigung, an die Kurve stellen.
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, 12:46     Titel:
  Antworten mit Zitat      
Die Modellfunktion ist mir im Grunde egal. Da ich allerdings mehrere Datenpakete habe, die einzeln zu behandeln sind, sich aber stark voneinander unterscheiden in ihrer Anzahl an Werten, sollte es skalierbar sein.
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, 13:03     Titel:
  Antworten mit Zitat      
Ich kann mir nicht vorstellen, dass die Modellfunktion egal sein kann. Was meinst du eigentlich mit negativer Steigung? Ist ein globale Absenkung gemeint und kann die Kurve lokal steigen? Stell' dir das als ein schwingendes Polynom vor mit lokalen Optima, aber an der Rändern ist der Endwert kleiner als der Anfangswert...
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, 13:24     Titel:
  Antworten mit Zitat      
es darf keinen Punkt geben, wo die Steigung positiv ist. Erlaubt ist keine bzw. negative Steigung. Das heißt der nachfolgende Punkt muss immer kleiner bzw. gleich dem aktuellen sein. Dennoch möchte ich eine gewisse Anpassung an das Profil, so dass bei einem starken Abnehmen der Werte das eben auch in einer höheren negativen Steigung sichtbar wird.

Zur Klarheit, es handelt sich hierbei um einen Querschnitt eines Flussprofils. Wasser fließt leider nur bergab und hierzu muss das entsprechend modelliert werden 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, 13:33     Titel:
  Antworten mit Zitat      
Sowas vielleicht?

Code:

x = 0:10;
y = -1*x+1;
xx = 0:.25:10;
yy = spline(x,y,xx);
plot(x,y,'o',xx,yy)
 


Die Gerade y = -1*x+1 beschreibt den negativen Trend.
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, 13:39     Titel:
  Antworten mit Zitat      
Ja, das schaut gut aus. Nur wie bekomme ich meine Werte auf eine Kurve, die das berücksichtigt?
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, 13:48     Titel:
  Antworten mit Zitat      
Die Frage verstehe ich jetzt nicht so recht. Ich rate mal. Du führst mit deinen Daten eine lineare Regression durch. Das führt zu der Geraden, die den negativen Trend beschreibt. Dann wählst du die Abstände ("eine gewisse Anpassung an das Profil") für die Splineinterpolation und fertig.
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, 13:54     Titel:
  Antworten mit Zitat      
Tut mir leid für die blöde Frage vorhin. Ich habe zuerst gepostet und dann gedacht Smile

Ich habe nun folgendes getan.
x sind bei mir die Werte
y die Gerade, die den Abwärtstrend festlegt
xx sind die jeweiligen Abstände, in meinem Fall 1 bis length(y)
yy das Ergebnis der Spline-Funktion

Leider bekomme ich beim letzten Schritt folgenden Fehler:
The data sites should be distinct.
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:01     Titel:
  Antworten mit Zitat      
Poste bitte den relevanten Code, sonst kann man den Fehler nur schwer identifizieren.
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:09     Titel:
  Antworten mit Zitat      
daten sind 1x1103 double

Code:

x = daten;
y = -1*x+1;
xx = 0:1:length(x);
yy = spline(x,y,xx);
Error using chckxy (line 51)
The data sites should be distinct.

Error in spline (line 54)
[x,y,sizey,endslopes] = chckxy(x,y);
 
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:11     Titel:
  Antworten mit Zitat      
xx muss von daten_min bis daten_max gehen, nicht von 0 bis zur Länge des Datensatzes.
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:15     Titel:
  Antworten mit Zitat      
in etwa so?

Code:
xx = min(x):.25:max(x);


Hierbei kommt bei
Code:
yy = spline(x,y,xx);
der gleiche Fehler, obwohl x und y die gleiche Länge haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 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.