matlab 求解高阶张量n-mode(n-模式)奇异值

% Matlab Tensor Toolbox:Computing the HOSVD
% 定义N阶张量A,以四阶为例
% 向量n中的数字可以理解为每一阶的维数
  n = [2,4,5,7];
  A = tenrand(n);
% 定义S
  S = A;
% 求解奇异值
% 本例中A.size = 1\2\3\4
% 每一个循环分别为按照模式k = 1\2\3\4 展开
  for k = 1:length(A.size)
    C = tenmat(A,k);
    % 此处的Sigma即为按照模式-k展开的奇异值
    [u{k},Sigma,V] = svd(C.data); 
    % 循环结束后得到核心张量,其实就是计算核心张量的公式
    S = ttm(S,u{k}',k);
end

计算得:

模式-1的奇异值为:[9.3128,3.5044];

模式-2的奇异值为:[9.0445,2.4886,2.2098,1.8003,1.6996]

模式-3的奇异值为:[9.0647,2.4899,2.4192,2.1881]

模式-4的奇异值为:[8.9488,2.1852,1.9714,1.7540,1.7080,1.5230]

结果没有参考价值,因为是tenrand()得到的张量矩阵,但奇异值的个数与每阶的维数相同。

 

你可能感兴趣的:(matlab 求解高阶张量n-mode(n-模式)奇异值)