From 7834bd50faae09876e2976ff86860057bb205544 Mon Sep 17 00:00:00 2001 From: Elian Dib <elian.dib@inria.fr> Date: Mon, 29 Apr 2019 08:34:40 +0200 Subject: [PATCH] Added functions to align, join and split matrices --- align.m | 27 +++++++++++++++++++++++++++ alignJoin.m | 33 +++++++++++++++++++++++++++++++++ join.m | 14 ++++++++++++++ split.m | 8 ++++++++ 4 files changed, 82 insertions(+) create mode 100644 align.m create mode 100644 alignJoin.m create mode 100644 join.m create mode 100644 split.m diff --git a/align.m b/align.m new file mode 100644 index 0000000..e101ed2 --- /dev/null +++ b/align.m @@ -0,0 +1,27 @@ +function [Val1,Off1,Val2,Off2] = align(Val1,Off1,Val2,Off2) +%ALIGN Summary of this function goes here +% Detailed explanation goes here + +if isempty(Val1) + Val1 = Val2; + Off1 = Off2; +elseif ~isempty(Val2) + Size1 = size(Val1); + Size2 = size(Val2); + + Max1 = Off1+Size1; + Max2 = Off2+Size2; + + Off_ = min(Off1,Off2); + Max_ = max(Max1,Max2); + + Val1 = padarray(Val1,Off1-Off_,nan,'pre'); + Val2 = padarray(Val2,Off2-Off_,nan,'pre'); + + Off1 = Off_; + Off2 = Off_; + + Val1 = padarray(Val1,Max_-Max1,nan,'post'); + Val2 = padarray(Val2,Max_-Max2,nan,'post'); +end +end \ No newline at end of file diff --git a/alignJoin.m b/alignJoin.m new file mode 100644 index 0000000..c0e88ab --- /dev/null +++ b/alignJoin.m @@ -0,0 +1,33 @@ +function [Val1,Off1,Val2,Off2] = alignJoin(Val1,Off1,Val2,Off2) +%ALIGNJOIN Summary of this function goes here +% Detailed explanation goes here + +if isempty(Val1) + Val1 = Val2; + Off1 = Off2; +elseif ~isempty(Val2) + Size1 = size(Val1); + Size2 = size(Val2); + + Max1 = Off1+Size1; + Max2 = Off2+Size2; + + Off_ = min(Off1,Off2); + Max_ = max(Max1,Max2); + + Val1 = padarray(Val1,Off1-Off_,nan,'pre'); + Val2 = padarray(Val2,Off2-Off_,nan,'pre'); + + Off1 = Off_; + Off2 = Off_; + + Val1 = padarray(Val1,Max_-Max1,nan,'post'); + Val2 = padarray(Val2,Max_-Max2,nan,'post'); + + M1 = ~isnan(Val1); + M2 = ~isnan(Val2); + + Val1(M1) = Val1(M1); + Val1(M2) = Val2(M2); +end +end \ No newline at end of file diff --git a/join.m b/join.m new file mode 100644 index 0000000..511db61 --- /dev/null +++ b/join.m @@ -0,0 +1,14 @@ +function Val1 = join(Val1,Val2) +%JOIN Summary of this function goes here +% Detailed explanation goes here + +if isempty(Val1) + Val1 = Val2; +elseif ~isempty(Val2) + M1 = ~isnan(Val1); + M2 = ~isnan(Val2); + + Val1(M1) = Val1(M1); + Val1(M2) = Val2(M2); +end +end \ No newline at end of file diff --git a/split.m b/split.m new file mode 100644 index 0000000..0e6b302 --- /dev/null +++ b/split.m @@ -0,0 +1,8 @@ +function [M1,M2] = split(M,Mask) +%SPLIT Summary of this function goes here +% Detailed explanation goes here + +[M1,M2] = deal(M); +M1(~Mask) = NaN; +M2( Mask) = NaN; +end \ No newline at end of file -- GitLab