WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

0-1 Matrix

 

Lena96
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.04.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 23.08.2014, 14:30     Titel: 0-1 Matrix
  Antworten mit Zitat      
Hallo,

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. Crying or Very sad

Viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2014, 14:36     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Habe das schon mit dec2bin ausprobiert.

Was und wie genau?

Zitat:
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Lena96
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.04.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 23.08.2014, 14:39     Titel:
  Antworten mit Zitat      
Servus Harald,

1)

K=50;
mod=dec2bin(0:2^K-1)-'0';

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)
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.08.2014, 15:18     Titel:
  Antworten mit Zitat      
Hallo,

ich bezog mich auf das Speichern aller benötigten Zeilen.

Hier ein rekursiver Ansatz, der die Matrix komplett generiert.

Code:
function mod = allcombi(k, K)

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


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lena96
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.04.14
Wohnort: ---
Version: R2013a
     Beitrag Verfasst am: 23.08.2014, 15:29     Titel:
  Antworten mit Zitat      
HI Harald,

dankeschön! Werde ich mir gleich anschauen.
Sonst für alle anderen Interessierten:

http://www.mathworks.com/matlabcent.....on-of-numbers-in-a-vector

Die letzte Antwort (von "Roger Stafford") löst das Problem auch.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.