Forum: Digitale Signalverarbeitung / DSP / Machine Learning Frequenzen aus Signal ermitteln


von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hi!

Ich muss in Matlab aus 2 vorgegebenen Signalen die Frequenzen ermitteln 
(jedes enthält 4 harmonische Komponenten). Dafür muss ich die DFT 
verwenden und Fensterungen vornehmen.

Die ungefensterten Signale seht ihr im Anhang.

Meine Fragen:
a) Muss ich einfach das Signal mit
filter(Num_Window,1,Signal);
falten und dann die DFT bilden?

b) Wie wähle ich diese Fenster, ich verstehe das mit der Fensterlänge 
nicht richtig. Muss ich mir die Impulsantwort des Fensters anschauen? 
Ist ein breites Fenster eines, bei dem die Nebenkeulen der Impulsantwort 
höhere Amplituden haben, oder ist mit breitem Fenster gemeint, dass die 
Bandbreite (fcut) sehr hoch ist?
Hab von Kollegen gehört, dass in diesem Fall das sogenannte 
"Kaiser-Fenster" sehr nützlich sein soll.
Wie würdet ihr hier das erste Fenster designen in fdatool.

Bin da ziemlich ratlos beim Thema Signalanalyse, das ist wirklich mein 
Sargnagel im bisherigen Studium. :(

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Die Signale sind noch hier zu sehen, hab vorher das Uploaden übersehen.

von Kai G. (kpl)


Lesenswert?

Haengt von der Lage der 2 signale ab, was die ideale herangehensweise 
ist.

Wenn du z.b. sicher sein kannst, dass auf den 1. Peak immer die 1. 
Harmonische von dem 2. Signal liegt reicht es die ersten 2 peaks zu 
finden. Natuerlich nur, wenn keine anderen fremden signale im Spektrum 
liegen.

Sonst kannst du 2* eine fft hintereinander ausfuehren, also etwa so: 
fft(abs(fft)) nennt sich cepstrum, um die grundschwingungen zu finden.

Fenstern schadet nicht, sonst kannst du spectral leakage effekte und 
evtl. bei dc einen peak haben.

Wenn das Signal evtl. durch einen vorgeschalteten Mischer verschoben 
ist, solltes du es vorher noch nach DC runtermischen, sonst klappts 
nicht mit dem cepstrum, da die harmonischen keine harmonischen sind :-)

von Martin (Gast)


Lesenswert?

@Christian: In den von dir geposteten zwei Signalen sehe ich keine 4 
Signalkomponenten. Im ersten sind 3 und im zweiten 2. Wie willst du hier 
deine 4 Harmonischen finden?

von Christian (Gast)


Angehängte Dateien:

Lesenswert?

Hier habe ich die genaue Angabe meines Problems:
Das Beispiel behandelt die Analyse von Signale mit Hilfe der DFT. Es 
sind 2 Signale (Signal- und Zeitvektor) gegeben im File signals.mat. 
Jedes Signal beinhaltet 4 harmonische Komponenten (4 Frequenzen).
Es sollen diese Frequenzen in Hz bestimmt werden.
Anschließend soll folgendes gemacht werden:
1. Untersuchung des Signals im Zeitbereich (Gibt es eine passende 
Fensterlänge)
2. Frequenzbereich: Untersuchung mit unterschiedlichen Fenstern). 
Diskussion dreier unterschiedlicher Fenster.

Ich weiß nun nicht, ob ich da die STFT verwenden muss?
zB. beim 1. Signal mit

y1 = Signal1.y;
fs = 1000;
N = 2^13;
spectrogram(,hamming(N),N-1,N,fs,'yaxis');

Oder funktioniert das mit der DFT auch, also mit

yf = 1/length(y1)*abs(fft(y1));
% Verschieben zur korrekten f-Darstellung
yf_shift = fftshift(yf);
% x-Achse definieren
k = -(length(yf)-1)/2:1:(length(yf)-1)/2;

Ich kriege in beiden Fällen komplett andere Frequenzen raus, weiß nicht, 
was da richtig sein soll.
Bei der STFT Frequenzen im Bereich 5,6,10 Hz, bei der DFT im Bereich um 
50 Hz (siehe oberhalb).

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
Noch kein Account? Hier anmelden.