matlab三维张量按页相乘

matlab三维张量按页相乘

  • matlab里对三维张量来说,按页加减,点乘点除都是支持的,但按页做矩阵乘法不行。
  • 定义函数:
function y = newtimes(x,y)
     	[mx,nx,p] = size(x);
		[ny,py,q] = size(y);
		x1 = reshape(x,nx,ny,1,q);
		y1 = reshape(y,ny,1,py,q);
		y2 = permute(y1,[2 1 3 4]);
		y = reshape(sum(bsxfun(@times,x1,y2),2),mx,py,q);
end        
  • 这里默认了两张量矩阵页维度是相同的,需要的可以自己改程序。
  • 测试:
a = [1 2 3;4 5 6; 7 8 9];
b = [3 5 6 ; 5 8 3; 1 5 9];
c = [3 4 8; 5 8 6; 4 5 6];
d = [4 5 6; 2 4 6; 2 5 9];
e = [3 7 8; 5 6 6; 4 5 6];
f = [4 4 6; 2 4 6; 2 7 8];

a*b
c*d
e*f

ans =

16    36    39
43    90    93
70   144   147

ans =

36    71   114
48    87   132
38    70   108

ans =

42    96   124
44    86   114
38    78   102
T=cat(3,a,c,e);  % [a,c,e],3*3*N张量
F=cat(3,b,d,f);   % [b,d,f],3*3*N张量
newtimes(T,F)

ans(:,:,1) =

16    36    39
43    90    93
70   144   147

ans(:,:,2) =

36    71   114
48    87   132
38    70   108

ans(:,:,3) =

42    96   124
44    86   114
38    78   102
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值