How do I implement a sliding window technique to initialize a large matrix?

E
Eli_sa2 · Sep 25, 2020 · 2K views
Question
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?
Expert Answer
Profile picture of Neeta Dsouza
Neeta Dsouza PhD Expert
Answered Nov 20, 2025
The following example shows how to implement a sliding window approach to initialize a large matrix.
The required matrix is a 5-D matrix which is 1000x6x4x3x6. We can initially initialize a 50x6x4x3x6 matrix and then slide along the 1st dimension to add the remaining 9950x6x4x3x6 elements
 
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
Have a different question? Ask here

Get a Free Consultation or a Sample Assignment Review!