www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Berechnung der Energie und der Leistung eines Signals


Autor: Merlin Erick (Firma: none) (new_user)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> % Converting The Amplitude in dB
>   Filter_Magn = 10*log10(Filt_Magn);

Was soll diese Logarithmierung? Du benutzt das Ergebnis 'Filter_Mag' 
dann zur Berechnung der Energie?


Gruß
FL

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht 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

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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