Hallo,
ich implementiere zur Zeit eine digitale FM im komplexen Basisband, d.h.
ich habe ein I- und ein Q-Signal, wobei eines der beiden amplitudenmäßig
verfälscht ist, was korrigiert werden muss. Dies bewerktstelligte ich
durch Normierung mit der Standardabweichung, welche proportional zum
Amplitudenfehler ist. Bei der Demodulation entschied ich mich für einen
Verzögerungsdemodulator. Leider liefert er noch nicht das gewünschte
Ergebnis (die letztendliche Normierung mit k*T habe ich noch nicht
gemacht, jedoch habe erkenne ich an den Vorzeichen, dass mein Ergebnis
nicht stimmen kann).
1 | function[ret] = fmdemodulator (I,Q)
|
2 |
|
3 | % FM-Demodulator für komplexe Basisbandsignale
|
4 |
|
5 |
|
6 | % Normierung zur Elimination des Amplitudenfehlers
|
7 | % mittels der Varianz (var ~ Fehler^2)
|
8 | varI = var(I);
|
9 | varQ = var(Q);
|
10 |
|
11 | %if...
|
12 | I = I./sqrt(varI);
|
13 | Q = Q./sqrt(varQ);
|
14 |
|
15 | clear varI;
|
16 | clear varQ;
|
17 |
|
18 | % AM-Unterdrückung
|
19 |
|
20 | norm = sqrt(I.^2 + Q.^2);
|
21 | I = I./norm;
|
22 | Q = Q./norm ;
|
23 | I_left = [0 ; I(1:(end-1) , 1) ];
|
24 | Q_left = [0 ; Q(1:(end-1) , 1)];
|
25 |
|
26 | ret = asin ( Q_left.*I - I_left.*Q );
|