Verfasst am: 21.05.2012, 12:54
Titel: Blockmatrix extrahieren und Diagonale auf 0 stzen
Hallo an alle,
ich habe eine ( m1 x n x n x m2 x m3 x m4 ) - Matrix A. Ich möchte die Diagonale für jede Teilmatrix A(i1,:,:,i2,i3,i4) gleich Null setzen. Mit for-Schleifen klappt das auch, aber ich hab mich gefragt, ob man da nicht eine elegantere Variante finden kann. Ich hab schon rumprobiert mit diag, reshape, repmat, shiftdim etc., aber ich komm nicht drauf.
m1 = 3;
n = 4;
m2 = 6;
m3 = 5;
m4 = 7;
A = rand(m1,n,n,m2,m3,m4);
tmp = ones(1,n);
for i1=1:m1
for i2 = 1:m2
for i3= 1:m3
for i4= 1:m4
diag_idx = sub2ind(size(A),tmp*i1,1:n,1:n,tmp*i2,tmp*i3,tmp*i4);
A(diag_idx) = 0;
end end end end
super, das zweite ist genau das was ich gesucht hatte, vielen Dank!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.