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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值