Azzera filtri
Azzera filtri

Use of tensorprod function to compute multilinear forms

7 visualizzazioni (ultimi 30 giorni)
Hi everyone,
I have to compute the multilinear form of a tensor and a vector. Suppose for example we have a 4-dimensional tensor A and a vector v. The 4-linear form is the multiplication of A by v 4 times. The only way that I found to do this is to use "for" loops. I think there must be a way to use the "tensorprod" function to perform the operation more efficiently but I can't find it. Thank you in advance to anyone who can help.
Cheers
n = 3;
A = rand(n,n,n,n);
v = rand(n,1);
for j = 1:n
for k = 1:n
G(:,k,j) = squeeze(v'*A(:,:,k,j));
end
end
for j = 1:n
J(:,j) = squeeze(v'*G(:,:,j));
end
res = v'*J*v;

Risposte (3)

Matt J
Matt J il 21 Mag 2024
Modificato: Matt J il 21 Mag 2024
n = 3;
A = rand(n,n,n,n);
v = rand(n,1);
J=pagemtimes(v',pagemtimes(A,v));
res=v'*reshape(J,[n,n])*v
res = 2.4327

Matt J
Matt J il 21 Mag 2024
Modificato: Matt J il 29 Mag 2024
res=A;
while ~isvector(res)
res=pagemtimes(v',squeeze(res));
end
res=res*v

Catalytic
Catalytic il 21 Mag 2024
res=A;
for i=1:ndims(A)
res = tensorprod(res,v,1);
end
res

Categorie

Scopri di più su Introduction to Installation and Licensing in Help Center e File Exchange

Prodotti


Release

R2024a

Community Treasure Hunt

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

Start Hunting!

Translated by