diff --git a/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m b/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m
index eaef4980ea58f84ced56d36a979a97c726ef26f3..b09f7055ef74f3aeec4358d7124ab2fa51c3f094 100644
--- a/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m	
+++ b/Virtual Sensing/Remote Microphone Technique/MATLAB/Functions/obsFiltTD.m	
@@ -251,7 +251,11 @@ function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, condNum, mMtx, Omean, RmeMean, RmmM
     end
 
     % "Split" observation filter vector to observation filters per monitoring and virtual microphone 
-    O = permute(reshape(permute(Ovec, [2, 1, 3]), filtLen, size(m, 2), size(e, 2), size(m, 3)), [3, 1, 2, 4]);
+    for jIdx = size(Ovec, 3):-1:1
+        for mIdx = size(m, 2):-1:1
+            O(:, :, mIdx, jIdx) = Ovec(:, mIdx:size(m, 2):end, jIdx);
+        end
+    end
 
     % ====================================================
     % Provide additional output arguments
@@ -278,7 +282,9 @@ function [O, Rme, Rmm, Ovec, RmeMtx, RmmMtx, condNum, mMtx, Omean, RmeMean, RmmM
         Oopt = RmeMtxMean.'/(RmmMtxMean + beta * eye(size(RmmMtxMean)));
 
         % Reshape
-        Omean = permute(reshape(Oopt.', filtLen, size(m, 2), size(e, 2)), [3, 1, 2]);
+        for mIdx = size(m, 2):-1:1
+            Omean(:, :, mIdx) = Oopt(:, mIdx:size(m, 2):end);
+        end
     end
     
     % Mean cross-correlations between monitoring and virtual microphones over trials/sound field realisations