Ich arbeite an Matlab und habe mich gefragt, wie ich Begriffe in eine große Matrix einfügen kann. Insbesondere habe ich eine 4914x4914
-Matrix und möchte eine 189x189
-Matrix erstellen, wobei jeder Term gleich der Summe der Terme in jeder 26x26
-Untergruppe ist.
Zur Veranschaulichung: Sagen wir, ich hätte die magische 4x4
-Matrix wie folgt:
und ich wollte eine 2x2
-Matrix erzeugen, die der Summe jeder 2x2
-Matrix innerhalb der ursprünglichen magischen 4x4
entspricht, d.h.:
Dankbar für jeden Rat! Vielen Dank jake
Ein alternativer Weg besteht darin, die gesamte Matrix in eine 4D-Matrix umzuwandeln und die Elemente über die erste und dritte Dimension zu summieren:
%Vor% Unter der Annahme, dass A
die Eingabe 4914x4914
Matrix ist, könnte dies ein effizienter (in Bezug auf die Laufzeit) Ansatz sein -
Für eine generische Blockgröße haben wir eine Funktion -
%Vor%Beispiellauf -
%Vor% Wenn Sie squeeze
-
In der Hoffnung, dass Ihnen die Leistung wichtig ist, hier die Benchmark-Ergebnisse für alle hier veröffentlichten Lösungen. Der Benchmark-Code, den ich verwendet habe -
%Vor%Die Benchmark-Ergebnisse, die ich auf meinem System bekommen habe -
%Vor%Sie können natürlich Matrixmultiplikation verwenden:
%Vor%