mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP überlagerte Pulsfolgen erkennen


Autor: H. S. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ein Pulszähler soll eine weitgehend bekannte Kurvenform (Delta-Marker) 
aus einem Signal extrahieren und mitzählen, wobei die Daten stark 
verrauscht sind.

Soweit funktioniert die Geschichte allerdings ergibt sich infolge eines 
Antennenproblems und dynamisch bewegter Objekte eine Reflektionsbildung, 
d.h. das Signal ist mehrfach enthalten.

Bei großen Abständen sehe Ich Echos, die Ich erkennen und ignorieren 
kann.

Bei kleinen Abständen laufen aber die Kurven ineinander, d.h. es gibt 
eine Deformation und die Erkennung misslingt.

Wie kommt man dem Problem einfach bei?

Nach Doppelpulsen suchen? Wie formuliere Ich die Annahme?

Autor: Abdul K. (ehydra) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Matlab oder einem 8051?

Autor: H. S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zunächst auch gerne mit Matlab. Langfristig mit einem Microcontroller, 
der klein genug ist und es leisten kann.

Wie wäre denn Dein Ansatz? Hätte denn MATLAB eine Vorschrift oder eine 
feritg implementierte Methode zur Erkennung eines Doppelpulses?

Oder muss Ich einfach selbst eine Reihe von Annahmen machen, um das 
Ergebnis der Pulsfolgen zu bekommen, mit denen Ich dann falte?

Ich habe eine ähnliche Lösung von anderer Seite skizziert bekommen, 
dabei handelt es sich aber um jeweils zwei einfach Wellen, die sich zu 
einem Kamelbuckel vereinen. Das ist recht einfach zu prozessieren.

Das Ursignal sieht übrigens vom Prinzip her so aus:

0,1,2,3,4,5,6,7,8,9,-9,-8,-7,-6,-5,-4,-3,-2,-1,0 also zwei komplementäre 
Geraden.

Autor: Dogbert (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn das Signal bekannt ist dann ist das doch eine Anwendung von 
Korrelation.

Es wird hier etwas schwieriger dadurch dass das bekannte Signal mit dem 
korreliert wird wenig Energie bei tiefen Frequenzen hat, quasi ein 
bandpass ist und damit die Korrelation nicht so leicht ausgewertet 
werden kann.

Normalisiert man aber die Frequenz etwas bis zu einer gewählten 
Grenzfreqzenz des Nutzsignals, verbessert sich das.

Octave/Matlab Beispiel:
close all
clear all

function fs = realmirror(rs);

  fs=[rs conj(fliplr(rs(2:end-1)))];

end

signal = [0 1 2 3 4 5 6 7 8 9 -9 -8 -7 -6 -5 -4 -3 -2 -1 0];

receivedsamples=200;

signal=[signal zeros(1,receivedsamples-length(signal))];

noise=randn(1,receivedsamples)*5e-1;
noise-=mean(noise);

received = noise ...
.+ shift(signal,50)  ...
.+ shift(signal,55)*.5 ... 
.+ shift(signal,70) ...
.+ shift(signal,80)*.5 ...
.+ shift(signal,100) ...
.+ shift(signal,120)*.5;

bandf=realmirror(exp(linspace(0,1,receivedsamples/2+1).^2*log(.1)));
bandf(1)=0;

plot (received)

figure()

plot (real(ifft(fft(received).*(bandf./[1 fft(signal)(2:length(signal))]))))


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.

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