0001 function X = sl2dpca_construct(Mm, PL, PR, Y)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025 if ndims(Mm) ~= 2
0026 error('sltoolbox:invalidarg', ...
0027 'Mm should be a 2D matrix');
0028 end
0029 [d1, d2] = size(Mm);
0030 if size(PL, 1) ~= d1 || size(PR, 1) ~= d2
0031 error('sltoolbox:sizmismatch', ...
0032 'Inconsistent size for 2D PCA model');
0033 end
0034 k1 = size(PL, 2);
0035 k2 = size(PR, 2);
0036 if size(Y, 1) ~= k1 || size(Y, 2) ~= k2
0037 error('sltoolbox:sizmismatch', ...
0038 'The feature size is inconsistent with the 2D PCA model');
0039 end
0040
0041
0042
0043 n = size(Y, 3);
0044 X = zeros(d1, d2, n);
0045 PRT = PR';
0046
0047 for i = 1 : n
0048 X(:,:,i) = PL * Y(:,:,i) * PRT + Mm;
0049 end
0050
0051