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
> % 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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.