Hallo!
Ich habe folgendes Problem. Ich soll einen Sinusgenerator an einen
Biosignalverstärker (Daten werden in MATLAB aufgenommen) anhängen und
diese Daten in MATLAB mit Hilfe einer FFT analysieren und daraus die
Amplitude des ursprünglichen Sinus (Zeitsignal) ablesen können.
Prinzipiell ist das ja nicht so schwer, allerdings weißt der
Sinusgenerator "ziemliche" Schwankungen auf. Habe dazu ein File als
Anhang, wo dies ersichtlich ist. Dadurch entspricht die Amplitude nicht
wirklich der Amplitude des Zeitsignals: das Maximum wäre ca. 12*10^4
dies entspricht 120mV, eingespeist habe ich aber einen Sinus mit 200mV
Amplitude.
Ich habe ein Bingröße (bzw. Spalten, ich hoffe es weiß jeder was ich
damit meine, weiß nicht wie das tatsächlich heißt) der FFT von 0.1Hz,
wenn ich diese vergrößere kommt wirklich nur ein Peak vor, und dieser
entspricht relativ gut der Amplitude des Zeitsignals.
Diese Bingröße sollte sich aber nicht ändern, jetzt muss ich das
irgendwie anders hinbekommen.
Jetzt habe ich mir gedacht, dass ich die einzelnen Werte der FFT rund um
den Peak (im Bild bei 1000Hz) aufsummiere und so die tatsächliche
Amplitude des Zeitsignals zu erhalten. Allerdings kommt da ein viel zu
hoher Wert heraus.
Vielleicht könnte mir da irgendwer helfen, um auf die tatsächliche
Amplitude rückschließen zu können. Wäre sehr dankbar dafür!
Noch zur Info, wie ich die FFT in MATLAB realisiert habe, dies sollte
eigentlich passen:
1 | Fs = 19200; % Sampling frequency [Hz]
|
2 | T = 1/Fs; % Sample time [s]
|
3 | L = 19200*10; % Length of signal [samples]
|
4 |
|
5 | NFFT = L;
|
6 | fft_data = fft(data,NFFT)/L; %calculate FFT
|
7 | abs_fft_data = 2*abs(fft_data); %calculate absolute values
|
Schoene Grueße