sliding window in a vector

Hey guys, I need help in designing a sliding window. In fact, I have a data matrix that it has 82 rows and 600 column, The column related to time. I want to collect the new 82*1 vector in a new sample and add it to my data matrix and remove the first column of the matrix. So, the size of matrix should be the same as before. I don't want to use loops for this issue. Do I have any other way to solve the problem??

 Risposta accettata

Walter Roberson
Walter Roberson il 31 Ott 2011
Simple code:
A = [A(:,2:end), newdata(:)];
Code that might possibly require more computation work but is possibly more efficient in memory:
A(:,1:end-1) = A(:,2:end);
A(:,end) = newdata(:);

Più risposte (1)

Wayne King
Wayne King il 31 Ott 2011
Hi, I'm not certain exactly what you asking for here. It seems to me you want to advance the columns by 1 and replace the first column with the new 82x1 data vector. In what follows, imagine A is your existing data and newdata is the new data vector.
A = randn(82,600);
newdata = randn(82,1);
B = circshift(A,[0 1]);
B(:,1) = newdata;

2 Commenti

Walter Roberson
Walter Roberson il 31 Ott 2011
My interpretation is that the first column is shifted out and the new data is put in the last column.
iman102
iman102 il 31 Ott 2011
exactly Walter

Accedi per commentare.

Categorie

Community Treasure Hunt

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

Start Hunting!

Translated by