ich möcht gerne ein Matrix folgendermaßen bauen. Ich gebe Parameter k und K an.
Parameter k ist die Anzahl, wie oft eine 1 in einer Zeile vorkommt. Parameter K gibt an, wie lang die Zeilen sind.
Für die Parameter k=1 und K=4 soll sich ergeben:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Für die Parameter k=2 und K=4 soll sich ergeben:
1 1 0 0
0 1 1 0
0 0 1 1
1 0 0 1
0 1 0 1
1 0 1 0
Und so weiter.... any ideas? Habe das schon mit dec2bin ausprobiert. Da wird mir dann aber die ganze Matrix generiert. ABER, wenn ich z.B. K=70 habe (was bei mir der Fall ist), funktioniert das nicht mehr.
wenn ich z.B. K=70 habe (was bei mir der Fall ist), funktioniert das nicht
mehr.
Das bedeutet was ? Ich würde "out of memory" vermuten, aber wissen wäre besser als vermuten.
Muss k flexibel sein, und wie groß kann es werden? Bei k = 35 und K = 70 ergäben sich, wenn ich das richtig rechne, z.B. 10^20 Kombinationen, das wäre also so oder so utopisch.
Nach jetzigem Stand würde ich zu einer for-Schleife tendieren. Das hat zudem den Vorteil, dass nicht alle Zeilen zwangsläufig gleichzeitig erzeugt und abgespeichert werden müssen.
Grüße,
Harald
Zuletzt bearbeitet von Harald am 23.08.2014, 14:41, insgesamt einmal bearbeitet
genau, es kommt dann out-of-memory bzw. "Maximum variable size allowed by the program is exceeded."
for-schleife dachte ich dann auch. Aber ich hatte gehofft, es gibt etwas eleganteres. Denn sonst müsste ich ja ganz viele Schleifen in einander bauen. Je größer klein k wird, desto mehr Schleifen brauche ich...
2)
bei K=50
k ist entweder sehr klein (1,2,3) oder sehr groß (48,49,50)
-> genau, es sollen nämlich NICHT alle Zeilen abgespeichert werden, as könnte ich ja mit dem dec2bin machen (funktioniert ja nicht und brauche ich auch gar nicht)
if k == K % da gibt es nur eine Möglichkeit mod = ones(1,K);
elseif k == 0% da auch mod = zeros(1,K);
else mod = [zeros(nchoosek(K-1, k),1), allcombi(k, K-1); % eine 0 vorne und dann alle weiteren Kombinationen ones(nchoosek(K-1, k-1),1), allcombi(k-1, K-1)]; % eine 1 vorne und dann alle weiteren Kombinationen end
Die letzte Antwort (von "Roger Stafford") löst das Problem auch.
Viele Grüße
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.