Beiträge von FZDB_FA

    Hello Community,


    Sei 2 Signale: Referenz PA und Messung PA_1

    um die Ähnlichkeit zwischen diese beiden Signale zu überprüfen habe ich:

    1- Das Referenzsignal in kleinen Abschnitten zerlegt

    2- Eine Schleife durchgeführt, in dem ich-Mit Hilfe der CorrCoeff- nach jedem Referenzabschnitt bei den anderen Signal suche

    (Warum nicht direkt vergleichen? Es geht darum diese kleine Verläufe in einen nächsten Schritt genauer auszubewerten)

    Anbei ist mein Code, es funktioniert nicht..noch nicht wie erhoff.!

    Falls Sie dieses Thema interessant finden , würde ich mich darüber freuen, wenn Sie damit für ein paar Minütchen bechfätigen und Feedback/ Ideen mit uns teilen.

    Sig= filtlpz(PA , 0, 0, 8, 10)
    StartW= 5.5
    RefAbschnitte= GrNew()
    EndW= 20
    Sig= Gren(Sig, StartW, EndW)
    Sig_Absch_1=Gren(Sig, StartW, 6.5)
    GrKanalAdd( RefAbschnitte, Sig_Absch_1 )
    Sig_Absch_2=Gren(Sig, 6.5, 7)
    GrKanalAdd( RefAbschnitte, Sig_Absch_2 )
    Sig_Absch_3=Gren(Sig, 7, 9)
    GrKanalAdd( RefAbschnitte, Sig_Absch_3 )
    Sig_Absch_4=Gren(Sig, 9, 9.5)
    GrKanalAdd( RefAbschnitte, Sig_Absch_4 )
    Sig_Absch_5=Gren(Sig, 9.5, 12.4)
    GrKanalAdd( RefAbschnitte, Sig_Absch_5 )
    Sig_Absch_6=Gren(Sig, 12.4, 12.6)
    GrKanalAdd( RefAbschnitte, Sig_Absch_6 )
    Sig_Absch_7=Gren(Sig, 12.6, 16.5)
    GrKanalAdd( RefAbschnitte, Sig_Absch_7 )
    Sig_Absch_8=Gren(Sig, 16.5, EndW)
    GrKanalAdd( RefAbschnitte, Sig_Absch_8 )
    Messung= filtlpz(PA_1 , 0, 0, 8, 10)
    Messung= Gren(PA_1, StartW, EndW )


    for index=1 to 8 
       A=RefAbschnitte:[index]
       for i=1 to lang?(Messung)-lang?(A)
          TeilStart= posi(A,A[i])
          DeltaT= posi(A,A[lang?(A)])
          Teil= Gren(Messung, TeilStart, DeltaT
          Erg = "Erg_"+tform(index,"")+"_"+tform(i,"")
          <Erg> = CorrCoeff(A,Teil)
          TeilStart= DeltaT 
             if <Erg> >= 0.8
                   MessAbschnitt= "Match_Abschnitt"+tform(index,"")+"Ab_Index_"+tform(i,"")

                   <MessAbschnitt>= Teil       
             else
                   i=i+1
            end
       end
    end



          

       

    Der Offset (Y-Achse) subtrahiert:

    GRoStückVersch_ = "GRoStückVersch_" + tform(indexGrS+1,"")<br><code> <GRoStückVersch_>= <GRoStück_>- wert(<GRoStück_>,StückStart)

    <code>

    <code> PulseAnzahl_= "PulseAnzahl_"+ tform(indexGrS+1,"")<br> <PulseAnzahl_>= Pulse(<GRoStückVersch_>) <br>

    <code> PulseDuration_= "PulseDuration_"+ tform(indexGrS+1,"")<br> <PulseDuration_>= PulseDuration(<GRoStückVersch_>=0-1)<br><br> <br><br>

    <code><br><br>

    Hallo Community,

    1) hätten Sie eine Idee wie man am besten die Schwingungen einer Funktion zählt?

    ich habe die Funktion Pulse() probiert nachdem ich dem Signal einen Offset subtrahiete. allerdings stimmen die Erebnisse nicht.

    Beispiel:

    Anhang ist eine Kurve die aus mehrere Schwingungen besteht, die Funktion Pulse() ergibt den Wert: 2


    2) Gibt es eine Funktion in Famos die die Zeitdauer einer Schwingung direkt berechnet ?

    Hallo Community,


    Hat jemand schon Erfahrung mit Zustandsfunktionen? Zugriff auf sie? Manipulation?

    Die Synthaxe, die ich bis jetzt kenne:

    Beispiel:

    fct= diff(Signal)

    Zst_fct= Fct> 5

    so bekommt man einen Rechtecksignal, der die Funktion in mehreren Stellen abscheined

    Wie kann man auf die Übergangspunkte(von 0 zu 1 und umgekehrt) zugreifen ?

    ich habe es mit eine Schleife probiert, indem ich zst_fct[index] mit zst_fct[index+1] vergleiche und wenn sie unterschiedlich sind, dann handelt es sich um einen Übergangspunkt!

    hat jemand eine Idee wie man es eleganter macht?

    vielen Dank im Voraus :)

    Hallo Community,


    ich würde gerne eine Kurve auf der x-Achse nach links verschieben.

    Hätte jemand eine Idee, wie man es am besten macht ?

    Matrix, Famosfunktionen, Wert/Posi Manipulation....?


    Danke im Vorraus :)

    Das glaube ich dir, ich bedanke mich herzlich für es versucht zu haben, meiner seits macht es auch keinen Spaß im selben Kreis zu drehen deswegen=> neuanfangen.

    1) erledigt

    2) Fehler : <varname> = gren(Referenz_Butterworth, wPunkt[index], wPunkt[index+1])

    3) 3. Parameter der Gren Funktion ist kein Einzelwert

    Das gewünschte Ergebnis ist angehängt.

    wie findest du die logik überhaupt bzw. wie würdest du ein Signal klein zerlegen ?



    Hallo aybabtu,

    vielen Dank nochmal für die Tipps. Ich habe meinen Code verbessert, allerdings bin ich wieder auf ein Problem gestoßen(Signalzerlegung).

    So sieht mein Code aus :

    ;Automatische Eventierung
    ;Referenzsignal PA zur verschiedenen Blocks abschneiden
    ;Methode: Maxima und Minima Manipulation
    ;Referenzsignal aus dem Rohsignal extrahieren
    PA_Länge= lang?(PA)
    Start_Ref = 4's'
    Ende_Ref = 18's'
    Referenz= Gren(PA, Start_Ref ,Ende_Ref)
    Referenz_Länge= Lang?( Referenz)
    Referenz_Butterworth= filtlpz(Referenz , 0, 0, 8, 10)
    Referenz_Butterworth_Tast1_Länge= Lang?( Referenz_Butterworth)


    ; Suche: Block 1
    y_Maximum=Max( Referenz_Butterworth)
    x_Maximum= PosiEx (Referenz_Butterworth, y_Maximum )
    Block1= Gren(Referenz_Butterworth,Start_Ref, x_Maximum)


    ; Suche: Block 2
    Block1_Länge= Lang?( Block1)
    Block23= Gren(Referenz_Butterworth, x_Maximum ,ende_Ref )
    Block23_Länge= Lang?( Block23)
    index1=1
    X_rMaxima= Xmaxi( Block23,x_Maximum )
    X_rMaxima_Länge= Lang?( X_rMaxima)
    Start_Block2= x_Maximum
    Stop_Block2= X_rMaxima[X_rMaxima_Länge]
    Block2= Gren(Block23, Start_Block2, Stop_Block2 )


    ; Suche: Block 3
    Block3= Gren(Block23, Stop_Block2, Ende_Ref)


    ; Suche: Block 1/Teil 1
    Block1_dttt= diff(filtlpz(diff(filtlpz(median(Referenz_Butterworth ,99),0,0,8,10)),0,0,8,10))
    start1= Start_Ref
    for index=1 to Lang?(Block1_dttt)-1
       if abs(Block1_dttt[index])< 0.002
          wPunkt= PosiEx( Referenz_Butterworth, Block1_dttt[index])
          VarName = "Block1_" + tform(index,"") + "_" + tform(index+1,"")
          <varname> = gren(Referenz_Butterworth, wPunkt[index], wPunkt[index+1])
       end 
    end
          

    Danke nochmal für die Antwort!

    Also ich suche die Krümmungen und sie erstallen so zu sagen meiene Intervallgrenzen... jetzt habe ich einen Syntaxproblem mit dem Anwenden der Indexen (Für Arrays!! )... Das Programm sieht folgendes aus:

    Signal_Länge= lang?(PA)
    index1=0
    index2=0

    while index1 < Signal_Länge

       erste_Ableitung[index1]= diff(PA[index1]) ; 1.Fehler
       zweite_Ableitung= diff(erste_Ableitung(index1)); 2.Fehler

        wenn zweite_Ableitung = 0 
        
           Krümmung= zweite_Ableitung

           Interval(index2)=Gren(PA, index2, Krümmung)

          index2= index2+Interval(index2)

         ENDE

       index1= index1+1

     ENDE
    Hätten Sie vielleicht eine Idee wie ich die Zwei Fehlerzeilen verbessern kann?

    vielen Dank für die schnelle Antwort!

    Meine Signale sind eigentlich row data, sie ertragen also normierungen um Rauschen zu entfernen.

    Eine Idee bzw. ein erster Schritt wäre auch vorm Vergleich, das Signal in kleinen Bereichen zu zerlegen und diese mit die entsp Bereiche vom Mustersignal zu vergleichen. Meine Weitere Frage ist dann folgendes: wie kann man ein Signal automatisch in verschiedenen Intervallen abschneiden?

    Ich habe es bereit mit den Funkionen Gren und suchpegel probiert (Die Grenzpunkte habe ich visuel bestimmt.. was sehr ungünstig war!)



    Hallo Community,

    ich muss für meine Abschlussarbeit Zwei Signale(gleicher Länge unterschiedliche Amplituden, Phasen und Frequenzen) mit einander vergleichen...

    Zeit oder Frequenzbereich?

    Kreuzkorrelation?

    hat jemend da schon eine Erfahrung??