Beiträge von aybabtu

    Okay,

    na die Perioden haben doch eine feste Breite.

    Also kennst du doch die jeweiligen x-Werte


    Code
    1. i * periodWidth + x


    Bzw. kannst du dir mit dem "perio" Befehl ja auch die einzelnen Perioden holen.

    Und dann kannst du dort wiederum mit Value dir den x-Wert holen. Hier musst du nur auf den x-Offset aufpassen.

    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. ;-)

    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.

    t_sample= Xdel?(channel) ; Abtastzeit für normale Datensätze

    Diff wäre die Ableitung der Werte...


    Wenn du allerdings einen XY-Datensatz hast, wird es etwas tricky.

    Aber hier würde ich einfach die x-Komponente nehmen, von 1 bis N-1 ausschneiden und vom Ausschnitt 2 bis N abziehen.

    Was passiert, wenn du die FileLoad-Methode anwendest? Auch hier gibst du ja das Einlesefilter an.

    Ansonsten kann es natürlich sein, dass dein Dateiformat nicht dem obigen entspricht und das Einlesefilter deswegen nicht so funktionieren kann.

    Der Beitrag ist ja auch schon 9 Jahre alt. Nicht dass sich da etwas am *.lvm-Format seitens Matlab getan hat.


    Hast du noch Alternativen zu diesem Dateiformat? Also kannst du seitens des Quellprogramms in einem anderen Format speichern, dass (dein) FAMOS eher akzeptiert?


    Allerdings ist es interessant, dass im Debug-Fall es bei dir funktioniert und sonst nicht. :/

    Die Frage ist doch auch, was bei Excel eingestellt ist. Also wie viele Nachkommastellen hier angezeigt werden.

    Ansonsten stimmt es schon, dass durch die Auflösung nun mal mehrere Nachkommastellen hinzukommen.


    "meine Messwerte bis auf die 8te Nachkommastell gleich sein"

    Warum sollte das nicht der Fall sein?

    Es geht doch nur um eine Zahlendarstellung bzw. eine Analog-Digital-Umsetzung.


    Konkret betrachtet werden unendlich viele Messwerte (in einem kleinen Bereich) in den gleichen Messwert dargestellt bzw. "umgewandelt", weil einfach nicht "feiner" aufgelöst werden kann.

    Bei mir hat es mit folgendem funktioniert:

    x= {<VariablenName>}


    Welche Fehlermeldung kommt dann bei dir? Immer noch die gleiche?

    Welchen Wert hat "VariablenName" ?


    Es gibt noch "TReplace", "TxReplace", "TxRegexReplace".

    Ansonsten hat FAMOS ab der 7.2 oder 7.3 auch für die Funktionen eine Suchfunktion.

    Und in "PA (2)" ist ein Leerzeichen.

    Beim Verwenden der spitzen Klammern würde dort die Zeile

    x = PA (2) ; ausgelöst

    stehen.


    Ergo:

    x = {<VariablenName>}

    Mit geschweiften Klammern kannst du auch "ungültige" Zeichen in Variablennamen verwenden.


    Dann müsstest es klappen und eine Variable mit Leerzeichen enthalten.

    Ich würde aber allgemein auf Leerzeichen in VariablenNamen verzichten.

    Hierbei kann auch TxGetValidVarName() helfen, welche in neueren Versionen vorhanden ist, sowie der Rename-Befehl.


    Mich wundert nur gerade, dass es mit einer *.dat-Datei geklappt hat. Oder hatte die kein Leerzeichen?

    Bei mir funktioniert dein Code auch mit einer *.raw Datei.


    Kannst du bitte den echten originalen Code hier reinstellen?

    Du scheinst mit Parametern zu arbeiten.

    Zudem denke ich, dass "funktioniert nur bei .dat" nicht in der Fehlermeldung steht. Das hat mich nämlich verwirrt.

    Weil deine Zeile 5 im obigen Code nichts mit *.dat-Dateien zu tun hat.

    VariableName sollte demnach auch keinen Punkt enthalten.


    Wenn aber dein Dateiname einen weiteren Punkt enthält, müsstest du das mit geschweiften Klammern "escapen".


    x = {<VariablenName>}


    Ich denke, es liegt eher ein Tippfehler vor. Es heißt ja "unbekanntes ... Objekt". Ergo kennt er die Variable zu dem Zeitpunkt nicht.

    Oder du hast keinen zweiten(?) Parameter übergeben.



    PS:

    Löblich dein Hinzufügen der Anführungszeichen um der Pfad-Leerzeichen-Problematik aus dem Wege zu gehen.

    Bei FileLoad und FsSplitPath ist das aber nicht notwendig. Notwendig ist dies u.a. für den alten "Laden" Befehl.

    1) Dazu müsstest du dir die Messwerte anschauen. Die Kurve verbindet standardmäßig auch nur die einzelnen Punkte. Du kannst das in den Linien-Einstellungen ändern um z.B. nur die Messpunkte anzeigen zu lassen. Oder Messpunkte mit Linien.

    2) Dazu fehlt mir persönlich die Erfahrung.

    3) Ok. Das bügelt schonmal kleine Änderungen weg - auch wenn es natürlich ggf. das Signal verfälscht. Kommt aber auf die Anwendung drauf an.


    Was ich immer anderen sage ist u.a.

    "Man sollte nicht die Glättungsbreite verändern, nur damit das Signal "schön" aussieht."

    Was ich damit sagen will ist, man muss immer wissen, was man da tut und sollte sich nicht seine Signale aufbereiten, nur damit sie "schön" aussehen.


    Und wenn du "ungewollte Treppenform" meinst, dann klingt das erstmal für mich nach etwas visuellem.

    Genaueres bringen dann die Messwerte.

    Die Treppen kommen aber eher durch gleiche nacheinanderfolgende Werte zu stande.

    Also war deine Idee mit dem sampleweisen Vergleich schon ganz okay.

    Die Frage ist, was du tust, wenn ein kleiner "Riffle" (minimale Änderungen) auf der "Treppen-Horizontalen" vorhanden sind. Ist es dann auch noch eine Treppenform? Also, gibt es da für dich ein Toleranzbereich?

    Ansonsten kannst du natürlich diff() nutzen und schauen, wo der Wert 0 ist (bzw. nicht 0).


    Die Frage ist auch, was willst du dann mit dieser Aussage weiter machen?

    Ohne jetzt groß was über Stick-Slip zu wissen ... wäre auch mal interessant, was genau das ist - in deinen eigenen Worten.

    Bzw. stelle dir die Frage, wie du selbst vorgehen würdest, um dies zu erkennen. Oder fängt hier schon die Herausforderung an? :-)


    1. Ist es nun eine Kennlinie oder sind es Messwerte? Das ist für mich ein wesentlicher Unterschied (s.u.)
    2. Sind deine beiden Methoden der allgemeine offizielle Weg dies zu berechnen oder ist genau das deine Frage?
    3. Wurde das Messsignal vorher geglättet oder anders aufbereitet?


    Ansonsten halte ich es (hier) für fragwürdig direktaufeinanderfolgende Samples von Messwerten miteinander zu vergleichen um daraus eine große Aussage oder gar "Erkennung" zu treffen. Wenn es sich um eine Kennlinie handelt, sieht es sicher anders aus.

    Laut deiner Methode 2 würde ja nur bei Gleichheit kein Stick-Slip entstehen.

    Welche Version von FAMOS hast du?

    Den ab Famos 7.2 (?) gibt es eine Suchfunktion für die Funktionen.


    Es gibt die Funktion "Regr", welche eine Gerade durch die Werte legt.

    Ansonsten gibt es auch die Funktion "Poly", welche eine Regression durchführen. Hier kannst du dir auch die Koeffizienten zurückgeben lassen.

    In wie weit das deiner "Verlängerung" entspricht, musst du selbst wissen.

    Mit "Ramp" kannst du dir dann deinen Zeitvektor aufbauen.


    Ich wäre bei sowas immer vorsichtig, ...

    wenn es einen festen physikalischen Zusammenhang gibt, kann man das sicher machen.


    Mit "Limits" meinst du aber nicht "Min" oder "Max"? Das würde ja nur den Maximalwert, nicht aber unbedingt die Asymptote berechnen.

    In der Funktionsliste sind diese gelistet und bieten eine Schnellhilfe.

    In der eigentlichen FAMOS-Hilfe gibt es dazu sicher mehr Informationen.


    In der Hilfe gibt es auch entsprechende Beispiele an denen man sich orientieren kann.

    1) Welche FAMOS-Version hast du?

    2) Warum benutzt du nicht das EXCEL-Kit/EXCEL-Funktionen, welches EXCEL ohne (sichtbares) DDE ansteuern?


    Aber gut, dass es scheinbar jetzt bei dir funktioniert.

    Okay, das ist natürlich eine sehr alte imc FAMOS Version und gut zu wissen.
    Mittlerweile gibt es schon die 7.4.


    Kann natürlich sein, dass das Verhalten damals anders war bzw. dort genau dieser Fehler drin war.

    Gibt es nicht eine höhere Revision? 6.1.x? Kann aber nicht sagen, ob es damit performanter wäre.
    Und dort gibt es FsFileExist auch noch nicht.


    Liegt die Datei lokal oder im Netzwerk?
    Bei letzterem muss natürlich auch erstmal der Zugriff (von FAMOS) überprüft werden, etc.


    Andere Datei-Funktionen, wie Zugriff auf ASCII-Dateien könnten ein FileExist ja ersetzen.
    Ich befürchte aber, dass das Verhalten ähnlich zum XLS-Befehl ist.


    Du kannst dich natürlich auch an die Hotline wenden.

    Ich schätze aber, die würden dir auch zu einem Update auf die 7.4 raten.

    Bei Dateifunktionen geht in der Regel ein Fenster auf mit "Datei kann nicht gefunden werden.". Ich erhalte z.B. eine ErrorCode 1004 Meldung.


    Dies lässt sich in den Optionen abstellen. -> Funktionen > Keine Fehlerboxen bei Dateifunktionen

    Dann würdest du auch eine entsprechende ID von 0 zurückbekommen.


    Alternativ kannst du auch vorher mit "FsFileExist" die Abfrage tätigen.


    Ich würde an deiner Stelle mal debuggen und schauen, wie der Pfad aussieht.

    Nicht das da "ungünstige" Zeichen drin sind, die die Funktion lahmlegen.

    Famos funktioniert da ein wenig anders.

    Soweit ich weiß, kann man in DIAdem Kanäle auf Auswertungen ziehen.


    In Famos muss man die Daten erstmal laden.

    Dann können diese Daten/Variablen ausgewählt werden, um diese z.B. in einem Kurvenfenster angezeigt zu werden.

    Ansonsten kann eine Sequenz aufgerufen werden und dieser ein Kanal bzw. eine Variable übergeben werden.


    Du kannst in FAMOS mit Hilfe des Panels (oder eines Dialoges) dir aber genau so eine Auswahlliste erzeugen.

    Bei der Panel-Seite gibt es dann für diese Auswahlliste ein SelectionChanged-Event, auf welchem du dann eine Berechnungs-Sequenz laufen lassen kannst.


    Du kannst dir ja mal das Beispiel-Projekt "FA70_Datenbrowser_Zug-hält-an" (FA70_DataBrowser_Train-stops) anschauen.

    Dort wirst du als Nutzer durch ein Panel geführt und es ist beschrieben, was du zu tun hast.

    Wenn du in den Design-Modus wechselst, kannst du die Sequenzen dahinter sehen.


    Falls du noch weitere Fragen kannst, kannst du sie hier gerne stellen.

    Wie schaut es mit dem "Excel-Kit" aus?

    Funktionsliste: Dateien, Import/Export > Excep (Erweitert)

    Hier gibt es passende Funktionen zum Schreiben von Datenblöcken.

    z.B.: XlSetValues( "B2", 0, channel1, 0)

    Bei FileSave kannst du auch eine Export-Vorlage auswählen.

    Allerdings würde er hier die Datei komplett neu-erstellen und hat nicht die Option des "Reinschreibens".