www.mikrocontroller.net

Forum: PC-Programmierung 2 Signale vergleichen


Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss zwei Signale vergleichen um festzustellen dass sie gleich sind. 
Das versuche ich unter Canape durchzuführen.

was ich mir überlegt habe, dass ich die zwei Signale von einander 
subtrahiere? Im Canape gibt's dafür eine fertige Funktion. das Problem 
ist, ich kriege als Ergebnis kein sauberes Signal, da die zwei Signale 
manchmal zeitverschoben sind oder manchmal gibt Abweichungen(kleine 
Abweichungen sind nicht relevant) im Amplituden . Ich wollte als 
Ergebnis einfach ein Peak bekomment wo die Signale größe Unterschied 
haben
Deswegen wollte ich eine neue Funktion schreiben, die diesen Vergleich 
durchführen kann. kann man das Problem auch mit der Autokorrolation 
lösen?
oder hat jemand hier eine andere Idee?
Die Signale die ich untersuchen muss, können periodische Signale oder 
nicht periodische Signale sein

Gruß Fabian

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
guck mal nach "Korrelation"

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bzw. Kreuzkorrelation
beide Signale werden zu jeder "Zeitverschiebung" miteinander 
multipliziert und dann integriert. Dort wo das Ergebnis am größten ist, 
sind die Signale am ähnlichsten bzw. gleich.
Hat den Vorteil dass du nicht von der Amplitude des zweiten Signals 
abhängig bist. So kann man z.B. auch noch das Echo eines Signals quasi 
aus dem Rauschen detektieren.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:
> bzw. Kreuzkorrelation
> beide Signale werden zu jeder "Zeitverschiebung" miteinander
> multipliziert und dann integriert. Dort wo das Ergebnis am größten ist,
> sind die Signale am ähnlichsten bzw. gleich.

ich wollte eigentlich ein Peak bekommen, da wo die Signale net gleich 
sind(unterschiedliche Amplituden, zeitverschiebung) kleine Abweichungen 
sollen dann rausgefiltert werden
und so kann man schnell an der Stelle wo die beide Signale 
unterschiedlich sind untersuchen wo es dran lag

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja umgedreht bekommst du natürlich einen kleinen Wert wo die Signale 
am wenigsten Deckungsgleich sind.

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timmo H. schrieb:
> Naja umgedreht bekommst du natürlich einen kleinen Wert wo die Signale
> am wenigsten Deckungsgleich sind.

ja so werde ich ganz viel Peaks bekommen. Ich will den Bereich 
untersuchen, wo die Signale unterschiedlich sind

Autor: g. b. (gunb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Timmo H. schrieb:
>> Naja umgedreht bekommst du natürlich einen kleinen Wert wo die Signale
>> am wenigsten Deckungsgleich sind.
>
> ja so werde ich ganz viel Peaks bekommen. Ich will den Bereich
> untersuchen, wo die Signale unterschiedlich sind

Hä?

Kannst du nicht mal irgendwie Signalbeispiele anhängen, damit man 
versteht, was du willst?

Du schreibst ganz oben, dass du Signale auf Gleichheit überpüfen willst, 
dann wieder, dass du die ungleichen Stellen untersuchen willst. Was 
willst du eigentlich mit den ungleichen Stellen machen?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gun B. schrieb:
> Was
> willst du eigentlich mit den ungleichen Stellen machen?

die will ich ja untersuchen, warum sie unterschiedlich ist. Die Signale 
werden im Canape dargestellt.
Damit ich mir die Arbeit sparen kann, wollte ich eine neue Funktion 
schreiben die mir eine Signal zurück gibt. Das Ergebniss Signal zeigt 
mir dann wo die zwei Signale unterschiedlich sind

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:

> ich wollte eigentlich ein Peak bekommen, da wo die Signale net gleich
> sind(unterschiedliche Amplituden, zeitverschiebung) kleine Abweichungen
> sollen dann rausgefiltert werden
> und so kann man schnell an der Stelle wo die beide Signale
> unterschiedlich sind untersuchen wo es dran lag

Wenn ich deine Aufgabe jetzt richtig verstehe, dann musst du aber immer 
noch die Phasenverschiebung suchen, bei der die beiden Signale am 
ähnlichsten sind -> Kreuzkorrelation.
Die Kreuzkorrelation sagt dir, wie du die Signale deckungsgleich 
bekommst, wenn man nicht zu genau hinschaut. Und das, was dann noch an 
Unterschieden bleibt, das ist das was dich interessiert.

Autor: g. b. (gunb)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@Fabian:

Siehe Beispiel im Anhang.

Dort, wo beide Signale am ähnlichsten sind, ist ein Maximum, dort wo sie 
sich weniger oder gar nicht ähnlich sind, folgen minimale Werte. Davon 
gibt es nicht "einen" Wert, sondern eine ganze Folge, ist ja auch 
logisch.

Du musst die Kreuzkorrelation verstehen lernen, dann nach der Lösung 
deines Problems suchen.

Canape? Von Vector? Bei mir 9 Jahre her. Meinst du aber, oder?

Autor: Fabian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gun B. schrieb:
> Canape? Von Vector? Bei mir 9 Jahre her. Meinst du aber, oder?


ja Canape von Vector, da wollte ich eine neue Funktion schreiben, die 
mir auswerten kann wo die zwei Signale unterschiedlich sind

Autor: g. b. (gunb)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fabian schrieb:
> Gun B. schrieb:
>> Canape? Von Vector? Bei mir 9 Jahre her. Meinst du aber, oder?
>
>
> ja Canape von Vector, da wollte ich eine neue Funktion schreiben, die
> mir auswerten kann wo die zwei Signale unterschiedlich sind

OK,

ist wie gesagt lange her, kann mich an CAPL als spezifische 
Programmiersprache erinnern.

Zum Vergleich zweier Signale bietet sich im Zeitbereich auf jeden Fall 
die Korrelation an und sollte auch in CAPL leicht zu implementieren 
sein.
Die ungleichen Stellen siehst du ja im Ergebnis in obigem Beispiel an 
den Stellen, wo die Samples null sind.

Falls du es noch gebrauchen kannst:

Das Ergebnis (3.Samplediagramm) erhälst du anschaulich nach der 
Papierstreifenmethode: du stellst dir das 2.te Samplediagramm über das 
erste verschoben vor:

Samples mit gleichem Index jeweils multiplizieren, dann alle Produkte 
summieren, dann verschieben und das ganze von vorne, bis der Streifen 
"hinten angekommen" ist.
So ergibt sich das 3.Bild als Ergebnis.

Alle Stellen gleich Null sind Stellen maximaler Ungleichheit.


So, muss nu weitermachen.

Gruß
Gunb

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.