I need to initialize a large 5 Dimensional Matrix. I am unable to initialize the whole matrix at once as I run out of memory. How can I implement a sliding window technique to initialize a small part of the matrix and then slide along one direction to gradually add the remaining elements?
Neeta Dsouza answered .
2025-11-20
function sliding_matrix
clear
countMatrix = zeros(50, 6, 4, 3, 6); %initialize a small matrix
for t = 1 : 50
for bm =1 : 6 % 5 bm
for bw =1 : 4 % 4 bw
for lv = 1 : 3 % 5 lv
for ta=1 : 6 % 200 ta
countMatrix(t,bm,bw,lv,ta) = ceil(101*rand(1)); %initialze the values
end
end
end
end
end
%
% perform necessary operations on the matrix
%
for i = 1:9950 %slde the window 10 times
%call function to add new data
countMatrix = SlideMatrix(countMatrix, i);
%
% perform necessary operations on the matrix
%
end
end
function A = SlideMatrix(A, i)
A(1,:,:,:,:) = []; %Reduce the the first dimension by 1
for bm = 1:6
for bw = 1:4
for lv = 1:3
for ta = 1:6
A(50, bm, bw, lv, ta) = i; %add a new elements along the first dimension
i = i + 1;
end
end
end
end
end