Faltung im Zeitbereich vs Multiplikation im Frequenzbereich: Faktorfehler

Gast #4809848
Lesenswert?

Hallo zusammen,

man nehme ein Signal mit den folgenden 4 Werten:
1 ; 0 ; 0 ; 0

Das komplexe Spektrum dieses Signals sieht so aus:
1/4 ; 1/4 ; 1/4 ; 1/4


Wenn ich dieses Signal in der Zeitebene mit sich selbst falte, kommt 
folgendes raus:
1 ; 0 ; 0 ; 0 ; 0 ; 0 ; 0

Das komplexe Spektrum des Ergebnis sieht so aus:
1/7 ; 1/7 ; 1/7 ; 1/7 ; 1/7 ; 1/7 ; 1/7

So weit, so gut.

Was ich jetzt nicht verstehe:
Es heißt, die Faltung im Zeitbereich entspricht der Multiplikation im 
Frequenzbereich.
Wenn ich aber die beiden Spektren multipliziere (also die 
korrespondierenden Werte der beiden Spektren multipliziere), kommt 
folgendes Spektrum raus:
1/16 ; 1/16 ; 1/16 ; 1/16

Das Signal im Zeitbereich sieht dann aus:
1/4 ; 0 ; 0 ;0

Es ist also um den Faktor 4 (Anzahl der Samples) zu klein.

Wo kommt dieser Faktor her?
Gast #4809883
Lesenswert?

Hab gerade Octave offen.
Und dieses Tool sagt was anderes:
1
>> % Zeitbereich
2
>> S = [ 1 0 0 0];
3
>> C = conv(S,S)  % Faltung
4
C =
5

6
   1   0   0   0   0   0   0
7

8
>> % Frequenzbereich
9
>> F = fft(S)
10
F =
11

12
   1   1   1   1
13

14
>> D = F .* F   % Multiplikation
15
D =
16

17
   1   1   1   1
18

19
>> Y = ifft(D)
20
Y =
21

22
   1   0   0   0
Gast #4809905
Lesenswert?

Wie ich auf 1/4 komme:
1
x[i] =  c0 * cos(2*PI*f0*i/N) + s0 * sin(2*PI*f0*i/N) 
2
     +  c1 * cos(2*PI*f1*i/N) + s1 * sin(2*PI*f1*i/N) 
3
     +  c2 * cos(2*PI*f2*i/N) + s2 * sin(2*PI*f2*i/N) 
4
     +  c3 * cos(2*PI*f3*i/N) + s3 * sin(2*PI*f3*i/N)  
5

6

7
x[0] =  c0 * cos(2*PI*f0*0/N) + s0 * sin(2*PI*f0*0/N) 
8
     +  c1 * cos(2*PI*f1*0/N) + s1 * sin(2*PI*f1*0/N) 
9
     +  c2 * cos(2*PI*f2*0/N) + s2 * sin(2*PI*f2*0/N) 
10
     +  c3 * cos(2*PI*f3*0/N) + s3 * sin(2*PI*f3*0/N) 
11

12
     = 1/4 * 1                +      0
13
     + 1/4 * 1                +      0
14
     + 1/4 * 1                +      0
15
     + 1/4 * 1                +      0
16

17
     = 1


Wenn ich für die c0 bis c1 jeweils 1 einsetze, komme ich auf x[0] = 4
#4811425
Lesenswert?

Ich verstehe deine Rechnung nicht.

Die diskrete Fouriertransformation lautet
x_n sei dabei der n-te Wert deines Eingangssignales (also x = 
[x0,x1,x2,x3]). Du möchtest X_0:
#4813528
Lesenswert?

Hallo,

bei den Vorfaktoren der Transformation treibt jeder Teilbereich was er 
gerade für besonders praktisch hält (Mathematik, Physik, E-Technik, 
Informatik). Die  meisten Softwarepakete haben dafür sogar extra Modi, 
die gewählt werden können, wobei der default Modi nicht einheitlich ist, 
sondern von der "Hauptnutzergruppe" der Software abhängt.
Die Zahlen passen da nur bei der mathematisch sauberen Transformation 
zusammen (die aber keiner außerhalb der Mathematik so verwendet, da sie 
oft nur Rechenleistung kostet und bei der Rücktransformation eh wieder 
verschwindet). Das "Geschlampe" an der Stelle wird gerne durch 
Normierung "weggemogelt".

Gruß Kai
#4813588
Lesenswert?

Dass bei der Normierung rumgeschlampt wird gebe ich dir gerne recht :) 
Aber das oben ist kein Fehler der Normierung (durch N oder durch sqrt(N) 
etc), sondern die Koeffizienten in den Summen sind schlicht falsch.
Das wird spätestens bei X_1 klar, das 0 ist und nach Rechnung des OP 
1/4. Das kann nicht durch einen Normierungsfehler (oder sagen wir durch 
eine andere Konvention) passieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren