|
|
Interpolieren zwischen zwei Werten |
|
diri3l |

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 25.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 13.06.2015, 14:28
Titel: Interpolieren zwischen zwei Werten
|
 |
Hallo,
ich habe in einem Vektor eine Zeitreihe einer Sinusschwingung, zudem den dazugehörigen Zeitvektor. Ich muss das Signal genau ab der Nullstelle auswerten. Leider ist die Samplingrate etwas ungünstig, sodass nur die Werte
301,4620 -0,00388300
301,4750 0,00395700
(links Zeit rechts Amplitude) vorhanden sind.
Ich muss genau den Zeitschritt finden, bei dem die Amplitude 0 ist. Ich bin mir nicht sicher ob das mit interp1 funktioniert. Bei mir hat es nicht geklappt.
Weiterhin möchte ich dann die Werte auf einen anderen Zeitvektor mit einer anderen Samplingrate umrechnen.
Vielen Dank schon mal.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.06.2015, 15:38
Titel:
|
 |
Hallo,
Zitat: |
Ich bin mir nicht sicher ob das mit interp1 funktioniert. Bei mir hat es nicht geklappt. |
Ich bin mir ziemlich sicher, dass es geht ;)Was hast du denn versucht?
Zitat: |
Weiterhin möchte ich dann die Werte auf einen anderen Zeitvektor mit einer anderen Samplingrate umrechnen. |
Auch das geht mit interp1.
Grüße,
Harald
|
|
|
diri3l |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 25.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 14.06.2015, 17:42
Titel:
|
 |
|
 |
|
Hallo Harald,
ich hab auf einen Tip hin, die Nullstelle per regula falsi gesucht. Damit hat es bestens funktioniert. Ich habe aber noch ein Problem.
Vorhanden ist eine Zeitreihe über 360s. Im Signal ist eine Sinusschwingung vorhanden und ich möchte genau eine Periode (10s) fenstern und analysieren. Das soll aber erst ab Sekunde 300 passieren, da das System vorher noch nicht eingeschwungen ist. Das heißt, es soll die erste Nullstelle nach Sekunde 300 gefunden werden.
Da wie gesagt, durch die Samplingrate keine Nullstelle im Zeitvektor vorhanden ist, habe ich sie über die Regula Falsi interpoliert.
Über einige Umwege habe ich nun einen Zeitvektor der bei 301,468438647959 beginnt (da befindet sich die 0-Stelle der Sinuskurve) und bei 311,468438647959 endet (da befindet sich die zweite 0-Stelle).
Die Schrittweite zwischen vorletztem und letztem Wert sowie zwischen ersten und zweiten Wert ist anders als zwischen den restlichen Werten, da hier ja die Nullstelle über Interpolation gefunden wurde.
Zudem habe ich natürlich mehrere Vektoren mit den Signalen die ich untersuchen möchte.
Jetzt habe ich noch einen Vektor mit den Zeitschritten auf die ich die Signale umrechnen will.
Eigentliche Frage:
Per interp1 funktioniert das nun nicht, da die Schrittweite nicht konstant ist. Ein Bekannter hat mir noch Resample empfohlen. Das klappt aber ebenfalls nicht. Ich glaube hier ist aber das Problem, dass mein ursprünglicher Zeitvektor bei 301 sekunden beginnt und mein neuer Zeitvektor bei 0 Sekunden beginnt. Wie kann ich Matlab mittteilen, dass der erste Wert im ursprünglichen Zeitvektor 0 entsprechen soll?
Vielen Dank,
Daniel
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.06.2015, 17:47
Titel:
|
 |
Hallo,
Zitat: |
Wie kann ich Matlab mittteilen, dass der erste Wert im ursprünglichen Zeitvektor 0 entsprechen soll? |
Diesen Wert abziehen?
Ansonsten: schreibe doch bitte, was du genau versucht hast (Code!), und welche Probleme dabei aufgetreten sind.
Wenn etwas "nicht funktioniert", ist oft nur eine Kleinigkeit das Problem. Damit man dir damit aber weiterhelfen kann, müssen wir schon genau wissen, was du eigentlich machst.
Grüße,
Harald
|
|
|
diri3l |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 25.01.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2013a
|
 |
|
|
 |
|
Verfasst am: 14.06.2015, 18:38
Titel:
|
 |
Hallo Harald,
Harald hat Folgendes geschrieben: |
Diesen Wert abziehen? |
da hatte ich wohl die Tomaten vor den Augen
Ein Simples
hat mir geholfen (TimeW ist mein Zeitvektor). Somit fängt mein Zeitvektor jetzt bei 0 an und der Resample befehl funktioniert.
Vielen Dank für den Tip. Die Ausleseroutine steht endlich und ich kann Ansys damit füttern
Sorry für die "Glaskugelmentalität". Ich werde mich bemühen das nächste Mal konkrete code snippets zu posten. Ich wusste nur selber teilweise nicht, wie ich überhaupt an das Problem ran gehen kann und ob mein Weg überhaupt der richtige ist.
Einen schönen Sonntag Abend,
Daniel
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|