From 18f133820bf7d65a74994c774fe2da4510228dfe Mon Sep 17 00:00:00 2001
From: Elian Dib <elian.dib@inria.fr>
Date: Thu, 22 Aug 2019 18:15:07 +0200
Subject: [PATCH] Using colDims and rowDims to determine matrix transformation

---
 complete.m  | 26 +++++++++++++++++++++-----
 factorize.m | 24 ++++++++++++++++++++----
 2 files changed, 41 insertions(+), 9 deletions(-)

diff --git a/complete.m b/complete.m
index a864fb7..65c3f1b 100644
--- a/complete.m
+++ b/complete.m
@@ -3,14 +3,30 @@ function [LFRef,LFMask] = complete(LFRef,varargin)
 %   Detailed explanation goes here
 
 LFSize = size(LFRef);
-ImgSize = LFSize(1:3);
-ImgRes  = LFSize(4:end);
+numDims = ndims(LFRef);
+colDims = 1:min(3,numDims);
+rowDims = 4:numDims;
 
-LFRef  = reshape(LFRef,prod(ImgSize),prod(ImgRes));
+p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
+p.addParameter('colDims', colDims, @isnumeric);
+p.addParameter('rowDims', rowDims, @isnumeric);
+
+p.parse(varargin{:});
+colDims = p.Results.colDims;
+rowDims = p.Results.rowDims;
+
+colSize = LFSize(colDims);
+rowSize = LFSize(rowDims);
+
+LFRef = permute(LFRef,[colDims,rowDims]);
+LFRef = reshape(LFRef,prod(colSize),prod(rowSize));
 
 [LFRef,LFMask] = utils.complete(LFRef,varargin{:});
 
-LFRef  = reshape(LFRef ,[ImgSize,ImgRes]);
-LFMask = reshape(LFMask,[ImgSize,ImgRes]);
+LFRef  = reshape(LFRef  ,[colSize,rowSize]);
+LFMask = reshape(LFMask ,[colSize,rowSize]);
+
+LFRef  = ipermute(LFRef ,[colDims,rowDims]);
+LFMask = ipermute(LFMask,[colDims,rowDims]);
 
 end
\ No newline at end of file
diff --git a/factorize.m b/factorize.m
index 1c71f54..4dff1bc 100644
--- a/factorize.m
+++ b/factorize.m
@@ -3,13 +3,29 @@ function [LFB,C,U,S,V] = factorize(LFRef,k,varargin)
 %   Detailed explanation goes here
 
 LFSize = size(LFRef);
-ImgSize = LFSize(1:3);
-ImgRes  = LFSize(4:end);
+numDims = ndims(LFRef);
+colDims = 1:min(3,numDims);
+rowDims = 4:numDims;
 
-LFRef  = reshape(LFRef,prod(ImgSize),prod(ImgRes));
+p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
+p.addParameter('colDims', colDims, @isnumeric);
+p.addParameter('rowDims', rowDims, @isnumeric);
+
+p.parse(varargin{:});
+colDims = p.Results.colDims;
+rowDims = p.Results.rowDims;
+
+colSize = LFSize(colDims);
+rowSize = LFSize(rowDims);
+
+LFRef = permute(LFRef,[colDims,rowDims]);
+LFRef = reshape(LFRef,prod(colSize),prod(rowSize));
+
+rowSize = [k,1];
 
 [LFB,C,U,S,V] = utils.factorize(LFRef,k);
 
-LFB = reshape(LFB ,[ImgSize,k,1]);
+LFB = reshape (LFB,[colSize,rowSize]);
+LFB = ipermute(LFB,[colDims,rowDims]);
 
 end
\ No newline at end of file
-- 
GitLab