% 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()得到的张量矩阵,但奇异值的个数与每阶的维数相同。