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

interp1() in Bereichen ohne Werte

 

Haloi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.10.2014, 20:33     Titel: interp1() in Bereichen ohne Werte
  Antworten mit Zitat      
Hallo zusammen,
leider hakel ich schon länger an einem Problem herrum. Ich habe eine Messreihe und Messpositionen. Diese sollen auf eine deutlich längere Achse interpoliert werden. Wenn ich die Spline interpolation verwende entsteht in dem Bereich ohne Messwerte ein riesieger Bogen! Gibt es eine einfache Lösung um mit genutzter Splineinterpolation am Ende der Messreihe gegen 0 gehen zu lassen? Also vom letzten Messpunkt aus?!
Viele Grüße
Haloi


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.10.2014, 20:48     Titel:
  Antworten mit Zitat      
Hallo,

wie wäre es, einen Datenpunkt mit großem x-Wert und y = 0 anzuhängen?
Falls das nicht weiterhilft, bitte ein konkretes Beispiel.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.10.2014, 01:36     Titel:
  Antworten mit Zitat      
Hallo,
das Beispiel:
Code:

x = 1:100
y = 50:100
p = sin(y)
m = interp1(y,p,x,'spline')
plot(m)

Es entsteht ein riesieger Bogen im Bereich ohne Messwerte. Das hinzufügen von Nullen wäre möglich. Aber wäre schade wenn es nicht eleganter geht!
Viele Grüße,
Haloi
 
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.10.2014, 00:58     Titel:
  Antworten mit Zitat      
Hallo,

das ist dann keine Interpolation, sondern eine Extrapolation - und Extrapolation ist immer schwierig. Ich sehe keine wirklich gute Lösung.
Du kannst höchstens im Extrapolationsbereich eine Modellfunktion verwenden, z.B. exp(a*x + b) und a und b so wählen, dass z.B. die Kurve durch den Randpunkt geht und die Steigung mit der Kurvensteigung übereinstimmt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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.10.2014, 11:19     Titel:
  Antworten mit Zitat      
Hallo,

ich hab's mal durchprobiert:

Code:
x = 1:100;
y = 48:100;
p = sin(y);
inrange = x>=min(y) & x<=max(y);
m = zeros(size(x));
m(inrange) = interp1(y,p,x(inrange),'spline');
[~, left] = min(y);
leftextrap_value = p(left);
leftextrap_slope = ( p(left+1) - p(left) ) / ( y(left+1) - y(left) );
a = leftextrap_slope / leftextrap_value;
b = log(abs(leftextrap_value)) - a*y(left);
m(~inrange) = sign(leftextrap_value)*exp(a*x(~inrange) + b);
plot(x, m)


Klappt allerdings nur, wenn die Steigung zwischen den Randpunkten zur Null hin geht (d.h. Vorzeichen der Steigung entspricht Vorzeichen des Werts).
Für eine Extrapolation nach rechts müsste eine entsprechende Rechnung durchgeführt werden.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.10.2014, 23:26     Titel:
  Antworten mit Zitat      
Danke Harald!

Ziemlich beeindruckend ich schäme mich nicht, das nicht selber hinbekommen zu haben;D
Haloi
 
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.