How to create a sliding window function over column vector M

If vector M is a column of 30000 points of temperature, How do I create a sliding window function that goes from 1 to 500, 2 to 501, 3 to 502 ...till the end. So the window length is 500.

 Réponse acceptée

You can easily implement a loop for this
A = [1,2,3,4,5,6]'; % Easy vector to verify output
fun = @(x)mean(x); % Your function
WindowLength = 2;
Output = zeros(length(A)-WindowLength,1);
for idx = 1:length(A)-WindowLength
Block = A(idx:idx+WindowLength);
Output(idx) = fun(Block);
end
Output
Output =
2
3
4
5
Or, if you want to have it in many places, just create a function for it:
function output = SlideFun(x,WindowLength,fun)
Output = zeros(length(x)-WindowLength,1);
for idx = 1:length(x)-WindowLength
Block = x(idx:idx+WindowLength);
Output(idx) = fun(Block);
end
end

1 commentaire

Jeff
Jeff le 8 Fév 2024
Modifié(e) : Jeff le 8 Fév 2024
Since I found this and ran into this issue, maybe this will help someone else.
Output = zeros(length(x) + 1 - WindowLength,1);
for idx = 1:length(x) + 1 - WindowLength
Block = x(idx:idx + WindowLength - 1);
Output(idx) = fun(Block);
end

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Test Model Components dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by