Daniel@0: function r = regularizeMKLDOD(W, X, gradient) Daniel@0: % Daniel@0: % r = regularizeMKLDOD(W, X, gradient) Daniel@0: % Daniel@0: % Daniel@0: Daniel@0: [d,n,m] = size(X); Daniel@0: Daniel@0: if gradient Daniel@0: r = zeros(m,m,d); Daniel@0: for i = 1:m Daniel@0: r(i,i,:) = diag(X(:,:,i)); Daniel@0: for j = (i+1):m Daniel@0: r(i,j,:) = diag(X(:,:,i)) + diag(X(:,:,j)); Daniel@0: end Daniel@0: end Daniel@0: else Daniel@0: r = 0; Daniel@0: for i = 1:m Daniel@0: r = r + squeeze(W(i,i,:))' * diag(X(:,:,i)); Daniel@0: for j = (i+1):m Daniel@0: r = r + squeeze(W(i,j,:))' * (diag(X(:,:,i)) + diag(X(:,:,j))); Daniel@0: end Daniel@0: end Daniel@0: end Daniel@0: end