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

1Dimensional interpolieren

 

Shadowbird
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.08.13
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 19.08.2013, 13:45     Titel: 1Dimensional interpolieren
  Antworten mit Zitat      
Hallo,

ich bin kompletter Neuanfänger mit MatLab.

Nun brüte ich vor dem Problem, dass ich eine Excel-Datei habe, bei der 3 unterschiedliche Werte von der Zeit abhängen. leider liegen mir die Daten nicht äquidistant vor. Aus diesem Grund müsste ich die Daten interpolieren und anschließend äquidistant ausgeben. Ich habe nur leider keine Ahnung wie man das machen könnte. (Im Anhang ein kleiner Ausschnitt meiner Daten).

Für Hilfe wäre ich sehr dankbar.

Ergebnisse_19_08_2013_Ausschnitt.txt
 Beschreibung:

Download
 Dateiname:  Ergebnisse_19_08_2013_Ausschnitt.txt
 Dateigröße:  17.2 KB
 Heruntergeladen:  297 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.08.2013, 16:23     Titel:
  Antworten mit Zitat      
Hallo,

Code:

Falls du damit nicht klarkommst, bitte genau beschreiben, wo das Problem liegt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.08.13
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 20.08.2013, 14:29     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für die Antwort.

leider komme ich trotzdem nicht weiter.

Ich habe 2 Vektoren (t und F) (10396 Zeilen und 1 Spalte) und möchte nun gern interpolieren um mir anschließend die äquidistanten Daten auszugeben.

Ich habe folgendes versucht:

Code:

um einfach als Beispiel bei t=2 ein Ergebnis zu kriegen.
Ich kriege folgende Fehlermeldung:

Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.

Error in interp1 (line 191)
F = griddedInterpolant(X,V,method);

In Zeile 191 ist jedoch keine Anomalität oder Auffälligkeit.

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.08.2013, 15:36     Titel:
  Antworten mit Zitat      
Hallo,

Zeile 191 ist die Zeile, aus der die Fehlermeldung stammt. Das Problem dürfte an anderer Stelle liegen. Mach mal
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.08.13
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 20.08.2013, 16:23     Titel:
  Antworten mit Zitat      
Hallo,

Als Answer bekomme ich dann 1.:

>> any(diff(t)<=0)

ans =

1

--> ansonsten weiterhin der gleiche Fehler

>> interp1(t,bf_RLFi1,2)
Error using griddedInterpolant
The grid vectors are not strictly monotonic increasing.

Error in interp1 (line 191)
F = griddedInterpolant(X,V,method);

Vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

die 1 bedeutet, dass in dein t-Vektor nicht streng monoton sind, also entweder nicht sortiert oder doppelte Werte. Und das musst du beheben, bevor du interp1 verwenden kannst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.08.13
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 21.08.2013, 12:35     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für die Hilfe bisher.
Das Problem ist inzwischen gelöst und die Interpolation funktioniert. Mit

Code:


erhalte ich auch meinen gewünschten Graph.

Allerdings würde ich die Werte nun gern in ein Ascii-File mit äquidistanten (0,01s) Zeitschritten schreiben. Wie ist das möglich?

Zusätzlich ist es der Fall, dass er nur einen Vektor und keine Matrix rausschreibt. Außerdem wird bei negativen Zahlen NaN angezeigt.

Danke.

Zuletzt bearbeitet von Shadowbird am 21.08.2013, 12:44, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.08.2013, 12:38     Titel:
  Antworten mit Zitat      
Hallo,

auf ein Gitter mit 0,01s interpolieren und dann
Code:


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.08.13
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 21.08.2013, 13:03     Titel:
  Antworten mit Zitat      
Hallo,

es tut mir leid, dass ich so schlecht klar komme. Aber ich habe einige Probleme.

1. alle negativen Werte werden als NaN angezeigt.
2. wie kann ich auf ein bestimmtes Gitter interpolieren?
3. ich würde gern eine Matrix mit x und y - Wert als Ergebnis der Interpolation bekommen. Sobald ich jedoch
Code:

mache wird mein X automatisch ein Vektor.

Vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

1. hast du denn Werte für negative Stützstellen? Wenn du extrapolieren möchtest, musst du das bei interp1 angeben (Zusatzargument 'extrap').

2.
Code:
gitter = ...;
werteAufGitter = interp1(t, werte, gitter, ...);
 


3.
Was ist t und was ist F1? Insbesondere: welche Dimensionen haben sie?
Ich würde interp1 immer mit 3 Eingabeargumenten aufrufen:
Code:
ygesucht = interp1(tgegeben, ygegeben, tgesucht);


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.