# I didn't understand how put the inputs in tprod function

4 views (last 30 days)
Francesco on 19 Aug 2011
How have I to put the input in tprod to have the same result of the code that follows?
a=rand(3,4,5);
b=rand(4,6);
for i=1:5
c(:,i,:)=a(:,:,i)*b;
end
[edit: matrix dimension corrected]

Fangjun Jiang on 19 Aug 2011
a=rand(3,4,5);
b=rand(3,4);
c=zeros(size(a));
for i=1:5
c(:,:,i)=a(:,:,i).*b;
end
Okay, I tried, it should be like below. The original tprod.m does contain incorrect examples.
a=rand(3,4,5);
b=rand(4,6);
for i=1:5
c(:,i,:)=a(:,:,i)*b;
end
% use tprod
Z=tprod(a,[1 -1 2],b,[-1 3]);
err=abs(Z-c);
err=sum(err(:))
err =
0

Francesco on 19 Aug 2011
Thank you, Fangjun Jiang, but I had in mind
c=tprod(a,[ ... something ... ],b,[ ... something ... ]);
Fangjun Jiang on 20 Aug 2011
That is the problem! You need to at least provide some explanation about tprod. It's not a MATLAB function anywhere. Do you mean this?
http://www.mathworks.com/matlabcentral/fileexchange/16275
Francesco on 20 Aug 2011
Yes, I meant right it.

Walter Roberson on 19 Aug 2011
What is "tprod" ? It does not seem to be indexed on the MATHWORKS web site.
Your code produces an error, as at each step you are attempting to do a matrix multiplication of a 3 x 4 matrix, by a 3 x 4 matrix. Either you need to use .* to do element-by-element multiplication, or you need to change your formula.

#### 1 Comment

Francesco on 20 Aug 2011
tprod is a function to multiply n-dimensional arrays (http://www.mathworks.com/matlabcentral/fileexchange/16275-tprod-arbitary-tensor-products-between-n-d-arrays)
About the dimensions: you're right, I corrected them right now, thanks.