Forum: Digitale Signalverarbeitung / DSP / Machine Learning überlagerte Pulsfolgen erkennen


von H. S. (Gast)


Angehängte Dateien:

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?

von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Mit Matlab oder einem 8051?

von H. S. (Gast)


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.

von Dogbert (Gast)


Angehängte Dateien:

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:
1
close all
2
clear all
3
4
function fs = realmirror(rs);
5
6
  fs=[rs conj(fliplr(rs(2:end-1)))];
7
8
end
9
10
signal = [0 1 2 3 4 5 6 7 8 9 -9 -8 -7 -6 -5 -4 -3 -2 -1 0];
11
12
receivedsamples=200;
13
14
signal=[signal zeros(1,receivedsamples-length(signal))];
15
16
noise=randn(1,receivedsamples)*5e-1;
17
noise-=mean(noise);
18
19
received = noise ...
20
.+ shift(signal,50)  ...
21
.+ shift(signal,55)*.5 ... 
22
.+ shift(signal,70) ...
23
.+ shift(signal,80)*.5 ...
24
.+ shift(signal,100) ...
25
.+ shift(signal,120)*.5;
26
27
bandf=realmirror(exp(linspace(0,1,receivedsamples/2+1).^2*log(.1)));
28
bandf(1)=0;
29
30
plot (received)
31
32
figure()
33
34
plot (real(ifft(fft(received).*(bandf./[1 fft(signal)(2:length(signal))]))))

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.