On 4/8/2013 8:22 AM, zack00 wrote: > I have a zero matrix with 100 collumns. I save there ploting signal from infinity loop. > i want save only last 100 collumns..Start running plot and save data to matrix. > When the matrix is filled delete first collumn and shift to left and save the last value. > > Can you help me with this problem?
i=0:11,mod(i,10)+1 idx=0; % index initialization nCol=size(y,2); % array column size while % Next index on range [1,nCol], increment loop counter idx=mod(idx,nCol)+1; idx=idx+1;
y(:,idx)=yourfunc(whatever); plot(y(:,idx)) % do whatever else... end
One can also write the pointer logic as
idx=idx+1; if idx>nCol, idx=1; end
Whichever way you do it, for maintaining the last N computations in a circular buffer there's no reason at all to actually shift data every iteration.
If you want the final results saved in chronological order on termination of the simulation, say, _THEN_ you can do the reordering once.