Filter löschen
Filter löschen

How to create a sliding window function over column vector M

55 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Thiago Henrique Gomes Lobato
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 Kommentar
Jeff
Jeff am 8 Feb. 2024
Bearbeitet: Jeff am 8 Feb. 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by