matlab tensor_tool 2.6工具箱中tenmat 可将张量转为mode n矩阵,此博客介绍如何将mode n矩阵逆转回原张量

 

 

clc;clear all;

a=rand(3,4,2,3,2) %任意5阶张量

a=tensor(a);% 此处tensor函数作用是将a转为tensor类型
M1=tenmat(a,1);% mode 1矩阵
M2=tenmat(a,2);% mode 2矩阵
M3=tenmat(a,3);% mode 3矩阵
M4=tenmat(a,4);% mode 4矩阵
M5=tenmat(a,5);% mode 5矩阵

%% 下面将mode n矩阵转为原张量a
a
a1=tensor(M1)
a2=tensor(M2)
a3=tensor(M3)
a4=tensor(M4)
a5=tensor(M5)

 

注意: 上述M1-5矩阵是tenmat类型,可以使用tensor将其转为原张量。 如果计入别的计算,需要将M1-5转换为double类型,即M11=double(tenmat(a,1);); 但是此时double类型的M11就不能使用tensor函数转为原张量了。

 

那么使用下面方式,将double类型的mode n矩阵转为原张量:
M11=double(M1)
rdims =M1.rdims% Dimensions that were mapped to the rows.
cdims =M1.cdims% Dimensions that were mapped to the columns.
tsize = size(a) %或M1.tsize % Size of the original tensor.
M10=tenmat(M11,rdims,cdims,tsize)
a1=tensor(M10)
a

这里a1与原张量一样了,即成功将mode-1矩阵转为原张量。类似其他mode-n矩阵同理。

 

 下面是对3维张量进行mode n矩阵和原张量互转,笨方法(上述看明白了 下面就不需要看了):

%测出的结论

mode n矩阵 逆变回原张量 :
inp=rand(3,4,2) %三维数组
inp=tensor(inp);% 转为tensor类型
 M=tenmat(inp,1);%产生张量inp的 mode 1矩阵 (属于tenmat类)
 
M11=double(M); %转为矩阵类
M3D1=reshape(M11,[3,4,2]) % mode 1 矩阵逆回原张量

 M2=tenmat(inp,2);% 
M21=double(M2);% 
M3D2=tensor(M21,[4,3,2])  
aa=permute(M3D2,[2,1,3])% mode 2 矩阵逆回原张量
 
 M3=tenmat(inp,3);% 
M31=double(M3);% 
M3D3=tensor(M31',[3,4,2]) % mode 3 矩阵逆回原张量

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值