Returns the squared Frobenius norms of the slices of a 3D matrix. function sqnorm = multisqnorm(A) Given a 3-dimensional matrix A of size n-by-m-by-N, returns a column vector of length N such that sqnorm(i) = norm(A(:, :, i), 'fro')^2. See also: multiprod multitransp multitrace norms
0001 function sqnorm = multisqnorm(A) 0002 % Returns the squared Frobenius norms of the slices of a 3D matrix. 0003 % 0004 % function sqnorm = multisqnorm(A) 0005 % 0006 % Given a 3-dimensional matrix A of size n-by-m-by-N, returns a column 0007 % vector of length N such that sqnorm(i) = norm(A(:, :, i), 'fro')^2. 0008 % 0009 % See also: multiprod multitransp multitrace norms 0010 0011 % This file is part of Manopt: www.manopt.org. 0012 % Original author: Nicolas Boumal, June 17, 2015. 0013 % Contributors: 0014 % Change log: 0015 0016 0017 assert(ndims(A) <= 3, ... 0018 ['multisqnorm is only well defined for matrix arrays of 3 ' ... 0019 'or less dimensions.']); 0020 [n, m, N] = size(A); 0021 0022 % This is equivalent to squeeze(sum(norms(A, 2, 1).^2)), but faster. 0023 sqnorm = sum(reshape(A, n*m, N).^2, 1)'; 0024 0025 end