berechnen Ich habe eine Zeitreihendaten oder unter Berücksichtigung einer realen Daten der Länge N
. Ich möchte Unterblöcke der Länge k
erstellen, die die Fensterlänge ist. Der Wert k
kann beliebig gewählt werden. Dies erzeugt ein Problem, da die Fenstergröße über die Daten hinweg gleich ist. Ich möchte jeden Unterblock in einem Array speichern. Aber ich bin stecken in der Erstellung von Teilblöcken der Daten und eine Überprüfung, so dass die (mod(N, nseg))
nseg
durch die Datenlänge teilbar sein muss.Mittelwert über ein gleitendes Fenster in MATLAB
N = 512; %length of the time series
data = rand(N,1);
window_length = 30; %k
Nseg = floor(N/window_length) %Number of segments or blocks
Modified_Data = [mean(reshape(data,window_length,Nseg))]; %Throws error
Vielen Dank für Ihre Antwort. Ich habe die Funktion im2col(). Ich würde gerne wissen, dass ich neben dem Erstellen nicht überlappender Blockgrößen auch die Methode anwenden kann, um überlappende Blöcke zu erstellen. Ich möchte nicht den Mittelwert über das gleitende Fenster für die Überlagerung. Lassen Sie die Daten enthalten 5 Elemente sagen Daten = [1,2,3,4,5]. Dann wären die Blöcke blck1 = (0,1); blk2 = (1,2); blk3 = (2,3); blk4 = (3,4); blk5 = (4,5)? Könnten Sie bitte eine Antwort auf Nichtüberschneidungen (die, die Sie bereits haben) und den sich überschneidenden Fall, den ich in diesem Kommentar erwähnt habe, vorlegen? Vielen Dank! –
Sie möchten nur den dritten Eingang von 'im2col' weglassen:' im2col ([1 2 3 4 5], [1 2]) ' – Suever
@SrishtiM Aktualisiert. – Suever