Matrix interpolation

  • Hallo zusammen,


    ich bin auf der Suche nach einer Möglichkeit eine Matrix mit gegebenen Werten für einzelne Indizes (restliche Werte = 0) spalten- bzw. zeilenweise zu interpolieren. Art der Interpolation (linear, splines etc.) ist erst einmal irrelevant.

    Gibt es hier eine Möglichkeit? (Abseits von der einzelnen Abfrage jedes Datenpunktes und "händischer" Interpolation.


    Anbei ein Beispieldatensatz.


    Danke!


    Gruß Tom

  • Es gibt die folgenden Funktionen speziell für Matritzen/segmentierte Daten:


    MatrixFromLine(,,,)

    MatrixIpol(,,,)


    Ansonsten kann natürlich auch jedes Segment mit den vorhandenen Interpolationsfunktionen verrechnet werden.

    ---

    Welche Famos-Version hast du?
    Ggf. sind o.g. Funktionen erst in neueren Versionen vorhanden.

    Ebenso die Funktionssuchfunktion mit der man leichter die Interpolationsfunktionen finden kann.

  • Hallo,

    leider funktioniert MatrixFromLine(,,,) nur, wenn ich mindestens zwei Werte Spalten, bzw. Zeilenweise hätte. Habe ich aber leider nicht.
    MatrixIpol(,,,) erweitert ja nur die vorhandene Matrix, vergrößert sie also mit Zwischenwerten.
    Ich würde gerne die Matrix beibehalten, alle gegebenen Werte (<>0) übernehmen und Zwischenwerte (bisher = 0 gesetzt) 2D-interpolieren, sodass eine Fläche entsteht.


    Verständlich, was ich meine?
    Danke und Gruß

  • Was genau meinst du mit "zwei Werte Spalten"?

    Dein Beispiel-Datensatz ist segmentiert und ich konnte die MatrixIPol-Funktion (technisch) darauf anwenden.

    Erweitert wurde die Matrix (bei meinen Einstellungen mit "1,1") nicht, sie hatte noch die gleiche Größe. Du hast aber Recht, verändert man hier die Faktoren, erhält man eine größere Matrix.


    ABER nun erkenne ich aber das Problem.

    Bei o.g. Interpolation sind für ihn die "0"-Werte ebenfalls Stützstellen. Und es wird versucht zwischen den Stellen zu interpolirieren.

    Das möchtest du ja aber nicht.

    Die Frage ist, woher soll ein PC das wissen, dass für dich die "0 Werte" nicht relevant sind? ;-)

    Es gibt ja leider kein "NaN", welches "ignoriert" werden könnte. Denn 0 ist ja ein Wert.


    Ansonsten hätte ich ja noch vorgeschlagen, via "FOREACH" jedes Segment einzeln zu interpolieren.


    Wie ist denn dieser Datensatz entstanden? Woher stammen die 0 Werte?
    Und was soll an den Rändern passieren? Die würden dann ja 0 bleiben, da der erste Wert "irgendwo" ist.


    Mir würde spontan nur einfallen jedes Segment einzeln zu nehmen.

    Das Segment dann in einen XY-Datensatz zu bringen und diesen zu interpolieren, zu resamplen und in eine Ergebnismatrix zurückzuschreiben.


    Das alles ergibt natürlich nur Sinn, wenn deine Interpolation segmentweise möglich ist.
    Es klang aber eher, dass du eine 2D-Interpolation möchtest, er also auch die "andere Richtung" berücksichtigen soll.


    Alles in allem ist mir die Deutung des Ergebnisses auch nicht klar - ich komme aber nicht aus der Mechanik-Ecke.


    Ansonsten kannst du natürlich dich auch an die hotline von imc wenden:
    Auf der Webseite http://www.imc-tm.de gibt es einen "Sofort-Kontakt" (Telefon/Mail)

    Manchmal haben die ja sowas auf Lager. Oder haben noch andere Ideen.
    Beschreibe da aber genau, was du machen willst. ;-)