If I have an array of 4 dimensions say A=complex(rand(2,2,2,2),rand(2,2,2,2)). If I need to calculate the inverse of this matrix, as defined beow , how should I do it?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
vishav Rattu
am 21 Okt. 2016
Kommentiert: vishav Rattu
am 21 Okt. 2016
I need to compute B(x,y,z,w) such that if I multiply the terms of A and B , I should get an identity matrix I(a,b,c,d):
I=zeros(a,b,c,d);
for a=1:2
for b=1:2
for c=1:2
for d=1:2
for i=1:2
for j=1:2
I(a,b,c,d)=A(a,b,i,j)*B(i,j,c,d)+I(a,b,c,d);
end
end
end
end
end
end
The I(a,b,c,d)= 1 only when a=b=c=d
2 Kommentare
Matt J
am 21 Okt. 2016
It is puzzling that you are organizing your data in 4D form, when you appear to want to do simple 2D matrix algebra with it. Are you sure it wouldn't be better just to reshape your data into 2D form
A=reshape(A,4,4)
and keep it that way?
Akzeptierte Antwort
Matt J
am 21 Okt. 2016
[a,b,c,d]=ndgrid(1:2);
I=reshape(a==b & b==c & c==d, 4,4);
A=reshape(A,4,4);
B=reshape( A\I , 2,2,2,2);
Weitere Antworten (1)
KSSV
am 21 Okt. 2016
Are you looking for something like this?
A = rand(2,2,2,2) ;
B = zeros(2,2,2,2) ;
for i = 1:2
for j = 1:2
B(:,:,i,j) = inv(A(:,:,i,j)) ;
end
end
% check
for i = 1:2
for j = 1:2
A(:,:,i,j)*B(:,:,i,j)
end
end
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!