row_blk = 1000; C = zeros(size(A,1), size(B,2), class(A)); f = 1; t = row_blk; while t <= size(A,1) C(f:t,:) = A(f,t,:)*B; f = t+1; t = min(size(A,1), f+row_blk-1); end col_blk = 10000; C = zeros(size(A,1), size(B,2), class(A)); f = 1; t = col_blk; while t <= size(A,2) C = C + A(:,f:t)*B(f:t,:); f = t+1; t = min(size(A,2), f+col_blk-1); end