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

Alle Teilmengen aus String Menge erzeugen

 

basmok
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.01.2014, 21:02     Titel: Alle Teilmengen aus String Menge erzeugen
  Antworten mit Zitat      
Hallo liebe Leute,

bin hier schon oft auf tolle Antworten gestoßen und hoffe ihr könnt mir vielleicht auch bei meinem Problem einen geschickten Tipp geben.

Ich möchte gerne von einer String Menge alle möglichen Teilmengen bilden.

Bsp. Auto Hund Katze
dann wäre dies:

Auto
Hund
Katze
Auto Hund
Auto Katze
Hund Katze
Auto Hund Katze

Leider habe ich als einziges habe ich die Funktion nchoosek ausfindig machen können, diese ist aber leider nur für Zahlen und auf statisch n Ausgabelemente fixiert.

Hättet ihr da eine Herangehensweiße für mich? Very Happy
Danke schon mal im Vorraus!
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 27.01.2014, 10:16     Titel:
  Antworten mit Zitat      
Mit Teilmengen meist du alle Kombinationen?

Den String hast du als "Auto Hund Katze" vorliegen? D.h. du musst ihn zuerst auseinandernehmen, also die einzelnen Elemente rausfinden? -> strfind/strcmp um die Leerzeichen zu finden und die Stringsteile zu vereinzeln.

Das eine Maltabfunktion nur für Zahlen funktioniert ist aber doch unerheblich - du weißt, wie viele Teilstrings N du hast -> Vektor [1:N]. Damit arbeitest du und schließt einen Schritt an, in welchen Zahl 1 der erste Strin, Zahl 2 der zweite String,... zugewiesen wird.

Da es endlich viele Teileinträge sind, sollte aber selbst ein "händisches" erstellen der Kombinationen über Schleifen kein Problem sein. (geschachtelte Schleife)
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 27.01.2014, 10:32     Titel:
  Antworten mit Zitat      
Hallo,

du kannst es genau so machen, wie Martina es gesagt hat. Für die Schleife gibt es auch eine schicke Lösung:
Code:
a = [1,2,3];
for k = 1:length(a)
    C{k} = combnk(a,k);
end
 

Nun sind in C die Indices der vorher getrennten Wörter enthalten, es sollte leicht sein, das wieder in die ursprünglichen Wörter zu überführen.

Übrigens: dieser Beitrag hier http://www.gomatlab.de/potenzmenge-.....31507,highlight,nras.html hätte dir helfen können.

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2014, 13:18     Titel:
  Antworten mit Zitat      
oder:

Code:
x = {'Auto','Hund','Katze','Miau'};

combs = power(2,size(x,2))-1;
x = repmat(x,combs,1);
y = logical([dec2bin(1:combs)]-48);
y2 = cell(combs,size(x,2));
x(~y) = y2(~y)



Zitat:
x =
        []        []         []    'Miau'
        []        []    'Katze'        []
        []        []    'Katze'    'Miau'
        []    'Hund'         []        []
        []    'Hund'         []    'Miau'
        []    'Hund'    'Katze'        []
        []    'Hund'    'Katze'    'Miau'
    'Auto'        []         []        []
    'Auto'        []         []    'Miau'
    'Auto'        []    'Katze'        []
    'Auto'        []    'Katze'    'Miau'
    'Auto'    'Hund'         []        []
    'Auto'    'Hund'         []    'Miau'
    'Auto'    'Hund'    'Katze'        []
    'Auto'    'Hund'    'Katze'    'Miau'
Private Nachricht senden Benutzer-Profile anzeigen
 
basmok
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 26.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.01.2014, 13:34     Titel:
  Antworten mit Zitat      
Geschickt! Mit Schleife und Indexen, stimmt!
Zum Glück habe ich mit den lookup-tables und hashtables noch gewartet - Schon so ein Gefühl gehabt, dass es wohl hoffentlich auch einfacher gehen könnte Very Happy

Den Link mit den Potenzmengen hatte ich nicht gefunden, wusste nicht ob diese Art der Kombinatorik einen eigenen Begriff hat oder wo es üblicherweise benutzt wird.

Vielen Dank!
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.