Ich habe einige EEG-Daten, die ich in 30-Sekunden-Fenster brechen und eine schnelle Fourier-Transformation auf jedem Datenfenster ausführen möchte. Ich habe versucht, eine for-Schleife zu implementieren und den Indexwert um die Anzahl der Stichproben im Zeitfenster zu erhöhen. Wenn ich das ausführe, kann ich sehen, dass (1) dies für das erste Datenfenster funktioniert, aber nicht für den Rest, weil (ich denke) die "Anzahl der Beispiele minus eins" zu weniger Elementen führt als für data_fft und somit notwendig hat nicht die gleichen Dimensionen wie f, die beide in einer Figur dargestellt sind. (2) Ich habe versucht, den Indexwert durch Hinzufügen der Anzahl der Samples in einem Fenster zu aktualisieren, aber nach i = 1 geht es in meinem Arbeitsbereich zu i = 2 und nicht wie erwartet auf i = 7681. Ich habe eine peinlich lange Zeit damit verbracht, herauszufinden, wie ich das ändern kann, damit es richtig funktioniert, also wird jeder Ratschlag geschätzt! Code ist unten. Lass es mich wissen, wenn ich etwas klären kann.Matlab: läuft fft in kurzen Zeitintervallen in einer for-Schleife für die Länge der Daten
data_ch6 = data(:,6); % looking at just 1 electrode
tmax = 2*60; % total time in sec I want to analyze; just keeping it to 2 minutes for this exercise
tmax_window = 30; %30 sec window
times = tmax/tmax_window; % number of times fft should be run
Nsamps = tmax*hdr.SPR; % total # samples in tmax; sample rate is 256 hz
Nsamps_window = tmax_window*hdr.SPR; % # samples in time window
f = hdr.SPR*(0:((Nsamps_window-1)/2))/Nsamps_window; % frequency for plotting
for i = 1:Nsamps; % need to loop through data in 30 second windows in tmax
data_fft = abs(fft(data_ch6(i:i+Nsamps_window-1))); %run fft on data window
data_fft = data_fft(i:((i+Nsamps_window-1)/2)); %discard half the points
figure
plot(f, data_fft)
i = i+Nsamps_window;
end
Warum nicht 'Spectrogram' verwenden? – ThP
Dies ist nur eine Übung, die ich für mich selbst erstellt habe, da ich FFTs über lange Zeiträume von Daten machen muss. Mein Problem ist noch "grundlegender" als "wie führe ich eine FFT aus", ich denke, es muss mehr damit anfangen, wie man eine For-Schleife richtig für diese Art von Situation konstruiert, in der ich um eine bestimmte Anzahl von Punkten erhöhen möchte und ich möchte wissen, was ich falsch mache. Trotzdem danke. – rana