Berechnung der Energie und der Leistung eines Signals

(Firma: none) #987306
Lesenswert?

Hallo, liebe Entwickler!
Ich mache gerade ein Praktikum mit Hauptthema Digitale 
signalverarbeitung. Und gleich habe ich eine Hurde. Die Berechnung der 
Energie und der Leistung eines Signal.

Ich nehme einfach mal ein Beispiel:

Fs = 1000;  % Sampling Frequency
N    = 20;         % Order
Fc   = 250;        % Cutoff Frequency
flag = 'noscale';  % Sampling Flag
% Create the window vector for the design algorithm.
win = hamming(N+1);
% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Fc/(Fs/2), 'low', win, flag);

Wie sie sehen, habe ich einfach mal ein filter mit Matlab entworfen.

Die Energie des filters in Zeitbereich habe ich einfach so berechnet:
   W_zeitbereich = b*b'  ( vektorweise );

Danach wandle ich den filter in Frequenzberecih mit dem FFT:
   Filt_FFT = fft(b, Fs);
   Filt_Magn = abs(Filt_FFT);
   Filt_Phase = angle(Filt_FFT);

   % Converting The Amplitude in dB
   Filter_Magn = 10*log10(Filt_Magn);

Nun möchte ich die Energie und die Leistung(nach Parseval) des Filters 
berechnen. So bin ich vorgegangen:
   W_frequenzbereich = filter_Magn * filter_Magn';

So kriege ich nicht das gleiche Ergebnis mit der in Zeitbereich.

Was mache ich falsch? Wie kann ich vorgehen?

Ich danke im voraus für Ihre Hilfe
#987998
Lesenswert?

Log weglassen und normieren:

b=rand(1,1000);
W_zeitbereich =(b*b')
Filt_FFT = fft(b);
Filt_Magn = abs(Filt_FFT);
W_frequenzbereich = Filt_Magn * Filt_Magn'/1000
Filt_FFT*conj(Filt_FFT).'/1000

Eleganter als diese abs() Geschichte ist das Rechnen mit der konjuguiert 
komplexen FFT wie in der letzten Zeile.

Cheers
Detlef

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