Forum: Digitale Signalverarbeitung / DSP / Machine Learning FFT Wie bekomme ich die Harmonische Schwingungen aus Spektrum


von Raj K. (raj_k)


Lesenswert?

Hallo Matlab-Freunde,

 ich habe eine FFT für eine einfache Sinusfunktion in Matlab 
implementiert

 Wie erhalte ich aus meinem Spektrum, die Harmonische 
Schwingungen/Anteile?

 H1=
 H3=

 usw.

 Kann mir da jmd helfen.

 Hier mein Code:
1
 % Einfache Realisierung einer FFT mit Sinus-Funktion 
2
% Ziel: Harmonische Schwingungen H1, H3, H5... herauszubekommen 
3
4
clc; 
5
6
 ta = 0.001; % Abtastzeit 
7
 T = 1;% Beobachtungszeit/Zeitinterval 
8
 fs = 1000; % Abtastfreq 
9
 t=0.001:0.001:1; % Zeitvektor 
10
11
 y=2*sin(50*2*pi*t)+2.65*sin(150*2*pi*t)+1*sin(250*2*pi*t);% Funktion 
12
13
for i=1:5 
14
     
15
     Yfa=2*abs(fft(y((i-1)*200+1:i*200)))/200;% fft Fenster bei jeweils 200ms 
16
     figure(i); 
17
     plot(Yfa)% Ausgabe 
18
end

von dadada (Gast)


Lesenswert?

Aus dem Diagramm ablesen?

Was moechtest Du genau machen?

von Raj K. (raj_k)


Lesenswert?

Danke für deine Antwort.

Ich taste mich von einem einfachen Beispiel zu meinem eigentlichen 
Projekt/problem.

Aus den obigen Beispiel möchte ich die Harmonische Schwingungen 
bekommen.

In meinem Projekt habe ich Messdaten, die ich über Simulink aus dem 
Scope erhalte.

Ich führe anschließend eine fft durch bekomme leider nicht die 
harmonische Schwingungen/Anteile.

von dadada (Gast)


Lesenswert?

Und was ist dad problem? Haeng doch mal den graph von deinem prog an. 
Ansonsten zeitschritte verkleinern und oder messzeit verlaengern.

von Raj K. (raj_k)


Angehängte Dateien:

Lesenswert?

Messwerte erhalte ich aus dem Scope. Siehe Signalpic.jpg


ts = 5*(10^(-6)); % Abtastzeit
Fs= 200000; % Abtastfrequenz
L = length(Messwerte);


NFFT = 2^nextpow2(length(Messwerte)); % Next power of 2 from length of y
Signal4 = fft(Messwerte,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

figure(5)
plot(f,2*abs(Signal4(1:NFFT/2+1)))
Yfft = 2*abs(Signal4(1:NFFT/2+1));

So habe alle Bilder angehängt.
In der Vergleichstabelle sind die zu erwartenden Harmonische 
Schwingungen angegeben, d.h. Diese werte sollte ich aus meiner FFT 
erhalten.


Vielen Dank!

von dadada (Gast)


Lesenswert?

Welche Einheiten hat Deine Tabelle?
Bleib doch erstmal bei der Simulation. Mach einen plot davon, aender dt 
und T. Und dann sag was nicht geht.

von Raj K. (raj_k)


Lesenswert?

In der Tabelle befinden sich Stromwerte [A].

Ich habe doch einen Plot von der Simulation gemacht.
oder Was meinst du?

von Joe (Gast)


Lesenswert?

Das Diagramm ist zu breit. Es darf max bis 500 Hz gehen.
DAnn kann man die Werte ablesen.

von Raj K. (raj_k)


Lesenswert?

Danke, aber wie passe ich es an ?
sry aber stehe auf dem schlauch -.-

von dadada (Gast)


Lesenswert?

Z.b mit der Lupenfunktion hereinzoomen.

von lalala (Gast)


Lesenswert?

Raj Kumar schrieb:
> Ich habe doch einen Plot von der Simulation gemacht.

Welcher Plot soll von dem Programm in Deinen Ursprungsposting sein?

von Raj K. (raj_k)


Lesenswert?

Signallpic.jpg ist das Bild aus dem scope von meinem simulinkmodel

Fftspectrum ist der Plot aus meinem Code
Siehe code

von lalala (Gast)


Lesenswert?

Raj Kumar schrieb:
> Fftspectrum ist der Plot aus meinem Code
> Siehe code
glaube ich nicht. FFT_Spectrum hat 10^5 Punkte und
>     Yfa=2*abs(fft(y((i-1)*200+1:i*200)))/200;% fft Fenster bei jeweils 200ms
>     figure(i);
>     plot(Yfa)% Ausgabe
hier erwarte ich eher 200.

von Raj K. (raj_k)


Lesenswert?

Sry habe mich falsch ausgedrückt
Siehe meinen drauf folgenden Code
Im zweiten post. Das Bild gehört dazu

von lalala (Gast)


Lesenswert?

Raj Kumar schrieb:
> Sry habe mich falsch ausgedrückt
> Siehe meinen drauf folgenden Code
> Im zweiten post. Das Bild gehört dazu

Versteh ich. Deswegen poste doch endlich mal den Graphen des ersten 
Codes. Da laesst sich Dir viel besser helfen, da die Werte ja durch die 
Simulation des Signales klar sind.

Also :

dadada schrieb:
> Bleib doch erstmal bei der Simulation. Mach einen plot davon, aender dt
> und T. Und dann sag was nicht geht.

von Raj K. (raj_k)


Lesenswert?

Ok füge ich morgen hinzu
Danke

von Raj K. (raj_k)


Angehängte Dateien:

Lesenswert?

@lalala
Dieses Bild bezieht sich auf den ersten Codeabschnitt Post 1

Ich habe hier nur figure 1 und 2 dargestellt da die restlchen genau so 
aussehen.


gruß raj k

von lalala (Gast)


Lesenswert?

Raj Kumar schrieb:
> Ich habe hier nur figure 1 und 2 dargestellt da die restlchen genau so
> aussehen.
>
> gruß raj k

Schön. Und da sind Deine 3 Frequenzen sehr gut zu sehen. Wo ist jetzt 
genau das Problem?

von Raj K. (raj_k)


Lesenswert?

Warum bekomme ich 2x mal dieselben Frequenzen im Spektrum?

von lalala (Gast)


Lesenswert?

Raj Kumar schrieb:
> Warum bekomme ich 2x mal dieselben Frequenzen im Spektrum?

Das sind die Koeffizienten der 'negativen'-Frequenzen. Bei einem reellen 
Eingangssignal gilt aber z(omega)=conj(z(omega)), d.h. die erhalten 
keine relevanten Informationen für Dich.

Der Zusammenhang zwischen der 'komplexen' und der sin und cos 
Fouriertransformation (die Du vielleicht besser kennst) ist z.B. hier 
beschrieben:
http://de.wikipedia.org/wiki/Sinus-_und_Kosinus-Transformation

von Joe (Gast)


Lesenswert?

Also dann nochmal:

Zu den Ecken aus dem Signalverlauf gehören hohe Frequenzanteile.
Deshalb ein Spektrum bis 500Hz oder sogar 1000Hz.

Vorübung:

Erzeuge dir einen Satz Messwerte durch die Berechnung von Y und plote 
dir diese Daten. Aber bitte einfache Datensätze, die auch 
nachvollziehbar sind.
Zu diesen Datensätzen erzeugt man sich dann das Spektrum um das 
entsprechende Verständnis zu erhalten.

Ohne Verständnis der elementaren Zusammenhänge ist auch eine 
Fernnachhilfe nicht machbar.

von Joe (Gast)


Lesenswert?

... und warum sehen die restlichen Bilder des Spektrums wohl genau so 
aus?

Das sieht man doch am Code.

von lalala (Gast)


Lesenswert?

Joe schrieb:
> ... und warum sehen die restlichen Bilder des Spektrums wohl genau so
> aus?

weil er nicht die Phase geplottet hat? :-)

von Joe (Gast)


Lesenswert?

lalala schrieb:
> weil er nicht die Phase geplottet hat? :-)

Nö.

Geplottet wird das FFT-Ergebnis aus einem Zeitbereich von 200ms.

Bei berechneten Messwerten auf einer Basis von f=50Hz liegen in 200ms 
genau 10 Perioden.
In den nächsten 200ms sehen die Messwerte genau so aus und in den 
jeweils folgenden 200ms hat man wieder den gleichen Messwertverlauf.

Daraus folgt, dass auch jede FFT-Analyse der vorherigen gleicht.

@ Raj

Hast du überhaupt verstanden, was die Matlab-Zeilen bedeuten?
Was bei y=2*sin(...    ) überhaupt alles passiert?
Welche Plot's willst du überhaupt sehen ?

von Raj K. (raj_k)


Lesenswert?

Erstmal danke an euch
 @ Joe
Ja ich weiß was dort passiert soweit

Was will ich sehen ?

Ich will die harmonischen sehen

Was ist in meinem Spektrum
H1=
H3=
H5=
USW
Kannst du mir das erläutern bitte
Wie erhalte ich die werte
Bzw. Wie hangen diese zusammen?
Zu meiner Funktion ?

von Joe (Gast)


Lesenswert?

Raj Kumar schrieb:
> y=2*sin(50*2*pi*t)+2.65*sin(150*2*pi*t)+1*sin(250*2*pi*t);% Funktion

H1=2
H2=0
H3=2.65
H4=0
H5=1
H6 ... u.s.w. = 0


Wenn dein FFT richtig läuft, dann siehst du das direkt im Plot.

von Raj K. (raj_k)


Lesenswert?

Ok dachte ich mir.
Danke.
Das habe ich jetzt soweit verstanden

Für mein eig. Projekt habe ich das
Mal angepasst.
Ich werde es heute Abend mal hinzufügen,
Weil dort stimmen die h1 h3 usw werte Nicht
Mit der Vergleichstabelle.
Du kennst dich gut aus Vllt kannst du mir das dann auch naher erläutern

Bin gerade nicht zu Hause, werde es heute Abend hoch laden

Vielen vielen Dank

von Joe (Gast)



Lesenswert?

Habe gerade ein kleines FFT-Programm für Matlab geschrieben, um die 
Lösung des Problems darzustellen.

Die eingefügten Kommentare dürften genügen.

Joe

von wetten? (Gast)


Lesenswert?

Joe schrieb:
> Die eingefügten Kommentare dürften genügen.

Wetten das nicht? Der TE will garantiert noch mit dem Löffel gefüttert 
werden.

von Jen Aer (Gast)


Lesenswert?

und wenn schon, ist doch egal.
@Joe: Hättest auch das *.m posten können.

von Raj K. (raj_k)


Lesenswert?

@ Joe

Sry, dass ich mich erst jetzt melde.
Vielen Dank fuer deine Mühe und Arbeit.
Du hast das Problem richtig erkannt.
Ich habe in der Zeit es etwas modiziert und
in meinem Projekt implementiert.
Es wurde mir anhand deines Beispiel und deine
lehreichen posts sehr vieles klar.

Danke nochmals.
Das Thema hat sich erledigt.

Gruß,
Raj

von wetten? (Gast)


Lesenswert?

Raj Kumar schrieb:
> Danke nochmals.
> Das Thema hat sich erledigt.

Dann hab ich die Wette leider verloren.

Glückwunsch!

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.