Matlab工具箱Tensor Toolbox,安装链接如下
CSDN-专业IT技术社区-登录blog.csdn.net .
,
这是我们定义的张量
,
matlab代码:
%%
%工具包:Tensor Toolbox
clc
clear all
X1 = 1:12;
X1 = reshape(X1,[3,4]);
X2 = 13:24;
X2 = reshape(X2,[3,4]);
%如何用矩阵拼接为张量,用tensor()函数
X(:,:,1) = X1;
X(:,:,2) = X2;%这只是3维数组,实际中Tensor Toobox 也不会产生误差,但为了防止意外
X = tensor(X);
%%
%工具包:Tensor Toolbox
clc
clear all
X1 = 1:12;
X1 = reshape(X1,[3,4]);
X2 = 13:24;
X2 = reshape(X2,[3,4]);
%如何用矩阵拼接为张量,用tensor()函数
X(:,:,1) = X1;
X(:,:,2) = X2;
X = tensor(X);
%张量按模展开
X_1 = tenmat(X,1);
X_2 = tenmat(X,2);
X_3 = tenmat(X,3);
1,张量与矩阵的模1乘 法。
,其中矩阵
。
过程如下
结果如下
,
再将矩阵折叠回张量。记住上面是辅助理解,真正的计算过程如图:
%张量与矩阵的模乘
U = 1:6;
U = reshape(U,[2,3]);
Y1 = ttm(X,U,1)
(2)张量与向量模乘
,其中
计算步骤:
。。。。
最终
.上述展开的只是辅助理解,真正的计算公式是按照下面计算的。
%张量与矩阵相乘
v = [1,2,3,4]';
ttv(X,v,2)
ttm和ttv分别是tensor times matrix and tensor times vector的缩写。便于记忆。
begin{bmatrix}end{bmatrix}
clc
clear
%I1=I2=I3=50,r={2,4,6,8,10,...,26}
dim = 3;
I1 = dim,I2 = dim ,I3 =dim;
r = 2;
%生成[0,1]的均匀分布的随机张量
coreTensor = tensor(rand(r,r,r));
%生成因子矩阵,服从[-0.5,0.5]的均匀分布
U1 = -0.5 + rand(I1,r);
U2 = -0.5 + rand(I2,r);
U3 = -0.5 + rand(I3,r);
T = ttm(coreTensor,{U1,U2,U3},[1,2,3])