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

2 次查看(过去 30 天)
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]

回答(2 个)

Fangjun Jiang
Fangjun Jiang 2011-8-19
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.
%%Your code
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
  3 个评论
Fangjun Jiang
Fangjun Jiang 2011-8-20
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

请先登录,再进行评论。


Walter Roberson
Walter Roberson 2011-8-19
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 个评论
Francesco
Francesco 2011-8-20
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.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by