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??

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 31 Okt. 2011

1 Stimme

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(:);

Weitere Antworten (1)

Wayne King
Wayne King am 31 Okt. 2011

0 Stimmen

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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by