Is there a function like movsum which simply gets the values in a given sliding window rather than summing them?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
David Haydock
il 4 Apr 2023
Modificato: Bora Eryilmaz
il 4 Apr 2023
If I have a sequence
x = [1 2 3 4 5 6 7 8 9 10];
What is the most efficient way to get sub-vectors in a sliding window, i.e., if the window is of length 2;
[1 2]
[2 3]
[3 4]
[4 6]
etc.
I ask this because I need get these values at multiple different window lengths.
Thank you in advance.
0 Commenti
Risposta accettata
Steven Lord
il 4 Apr 2023
Let's use some starting data that's a little more varied than 1:10.
x = [1 2 3 4 5 6 7 8 9 10].^2
Define the window length.
windowLength = 2;
Where does each window start? There are windows starting with each element of x except for those that are too close to the end. "Too close" is less than windowLength-1 from the end; if we started at windowLength-2 from the end the window would extend past the end of the vector.
startingPoints = 1:numel(x)-(windowLength-1)
Now we define the window offsets from the starting point. The first point in the window is the starting point + 0, the next is the starting point + 1, etc. up through starting point + window length - 1.
windowOffsets = (1:windowLength)-1
Use implicit expansion to define the window indices by adding the starting points and the offsets, with different orientations.
windowIndices = windowOffsets + startingPoints.'
Get the corresponding elements from x.
x(windowIndices)
0 Commenti
Più risposte (2)
David Hill
il 4 Apr 2023
b=1:10;
a=b;
n=5;%window size
for k=1:n-1
a=[a;circshift(b,-k)];
end
a=a';
a=a(1:length(b)-n+1,:)
0 Commenti
Bora Eryilmaz
il 4 Apr 2023
Modificato: Bora Eryilmaz
il 4 Apr 2023
If you have access to the Predictive Maintenance Toolbox, you can use the phaseSpaceReconstruction command:
x = [1 2 3 4 5 6 7 8 9 10];
sz = 2;
y = phaseSpaceReconstruction(x, 1, sz)
sz = 4;
y = phaseSpaceReconstruction(x, 1, sz)
0 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!