Hallo, ich möchte die Amplitude mit der FFT bestimmen. Dabei habe ich Daten gespeichert als CSV Datei(x und y-Achse) Habe folgenden Code: array = csvread('datei.csv'); %Signal importieren signaltime = array(:, 1); %x signaldata = array(:, 2); %y N = 2^nextpow2(length(signaldata)); p = abs(fft(signaldata,N))/N; %Power of signal p = p(1:N/2+1) %Einseitiges Frequenzsspektrum p(2:end-1) = 2*p(2:end-1); %Alle Amplituden bis auf der Amplitude bei f = 0Hz verdoppeln Fs = 3.2000e+11; %Abtast-Frequenz f = Fs/2*linspace(0,1,N/2+1); %Frequency spacing subplot(1,2,1), plot(signaltime,signaldata) xlabel('Time(s)'),ylabel('Amplitude') subplot(1,2,2), plot(f,p) xlabel('Frequency (Hz)'),ylabel('Amplitude') Aber irgendwas scheint nicht zu stimmen. Mir wird eine falsche Amplitude angezeigt. Vielleicht findet es sich jemand, der den Fehler erkennt? Danke!
Bux schrieb: > Aber irgendwas scheint nicht zu stimmen. Mir wird eine falsche Amplitude > angezeigt. Wie sieht denn das Signal aus? Was erwartest du und was für ein Ergebnis bekommst du?
Siehe Screenshot. Links der Verlauf ist korrekt und rechts wird die falsche Amplitude angezeigt
Was erwartest du für ein Ergebnis? Rechne dein Beispiel per Hand mittels der Fourier Transformation durch.
Dein Eingangssignal ist nicht-periodisch, erwarte von einer FFT daher nicht eine einzelne, saubere Amplitude.
Bedeutet es sozusagen, wenn ich einen Verlauf speichere mit 100Perioden das mir dann eine genauere Amplitude angezeigt wird?
So, ich habe mal versuch das ganze nachzustellen. Aus wie vielen Punkten besteht dein Signal? Wenn ich die Anzahl der Punkte von 1.000 auf 100.000 erhöhe, dann sieht das Ergebnis im Grunde perfekt aus.
Was meinst du mit Punkte? Also meine Abtastzeit beträgt 1.0000e-08 oder Abtastfrequenz 1.0000e+08 Wie hast du die Anzahl der Punkte erhöht? Mein signaldata und signaltime sind 1000000x1 double
Punkte = Werte Da ich ja deine original Werte nicht habe, habe ich mir halt selbst einen Sinus aus entsprechend vielen Werten zusammengebastelt. Bux schrieb: > Also meine Abtastzeit beträgt 1.0000e-08 oder Abtastfrequenz 1.0000e+08 Bei ein paar ms aus deinem Bild, müsstest du doch auch schon beinahe eine Million Werte haben, oder?
Christian L. schrieb: > ... habe ich mir halt selbst einen Sinus aus entsprechend vielen > Werten zusammengebastelt. Und wo bleibt das Rechteckfenster [-4.x .. 6.x]s
W.A. schrieb: > Und wo bleibt das Rechteckfenster [-4.x .. 6.x]s Ach, das habe ich gar nicht gesehen, dass das Signal vor den 0s beginnt. Das sollte aber auf die Amplitude keinen Einfluss haben, sondern nur auf die Phase und die Frequenz selbst.
Bux schrieb: > Bedeutet es sozusagen, wenn ich einen Verlauf speichere mit > 100Perioden > das mir dann eine genauere Amplitude angezeigt wird? Ja, das nennt sich Fensterung. Du macht das Fenster im Zeitbereich breiter (mehr Samples werden beobachtet), dadurch wird es im Frequenzbereich schmaler und deine Frequenzauflösung steigt. So wie ich das sehe, hast du eine sehr kleine Signalfrequenz (kHz) und eine sehr große Abtastrate (GHz). Da wirst in der FFT bei Matlab den Leakage-Effekt nicht unbedingt sehen. Zoom in dein Bild und schau, ob es wirklich nur ein Dirac ist.
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.