Ich versuche, die folgenden in allgemeiner Weise zu tun:Begradigen und verketten die einzelnen Gitter aus ndgrid
x = {0:1, 2:3, 4:6};
[a,b,c] = ndgrid(x{:});
Res = [a(:), b(:), c(:)]
Res =
0 2 4
1 2 4
0 3 4
1 3 4
0 2 5
1 2 5
0 3 5
1 3 5
0 2 6
1 2 6
0 3 6
1 3 6
Ich glaube, ich habe folgende Art und Weise zu starten, aber ich kann nicht herausfinden, wie man weiter:
cell_grid = cell(1,numel(x));
[cell_grid{:}] = ndgrid(x{:});
[cell_grid{:}]
ans =
ans(:,:,1) =
0 0 2 3 4 4
1 1 2 3 4 4
ans(:,:,2) =
0 0 2 3 5 5
1 1 2 3 5 5
ans(:,:,3) =
0 0 2 3 6 6
1 1 2 3 6 6
ich [a, b, c]
dies in vielerlei Hinsicht für den Fall mit drei Variablen lösen kann, sowohl mit als auch ohne Schleifen, aber ich fange an zu kämpfen, wenn ich mehr Vektoren erhalten. Wenn Sie es direkt umformen, erhalten Sie nicht das richtige Ergebnis, und das Mischen von Umformungen mit Permutation wird wirklich schwierig, wenn ich eine beliebige Anzahl von Dimensionen habe.
Können Sie sich eine clevere Methode vorstellen, die auf 3-30 Vektoren in x
skaliert?