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

Vektor mit Gesamt-Obergrenze auffüllen

 

Cherup
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2014, 10:34     Titel: Vektor mit Gesamt-Obergrenze auffüllen
  Antworten mit Zitat      
Hallo,

ich habe mal wieder ein Brett vorm Kopf. Ich weiß, dass der Titel nicht ganz aussagekräftig ist, aber mir ist leider kein besserer eingefallen...

Das Problem:
Ich habe einen Vektor mit 9 Elementen, wobei jedes Element die Werte von 0 bis 200 annehmen kann. Allerdings darf die Gesamtzahl 200 nicht überschritten werden, [200,150,0,..,0] ist also nicht zulässig, [50,150,0...,0] dagegen schon.
Ich möchte nun alle möglichen Kombinationen von Werten haben und diese zur weiteren Verarbeitung an eine andere Funktion übergeben.

Ich hoffe, ich habe das Problem verständlich genug beschrieben.
Natürlich kann ich das Ganze brutal mit 9 geschachtelten for-Schleifen machen, aber ich wüßte gern, obs einen etwas eleganteren Weg gibt.

Viele Grüße
Cherup
_________________

Linux is like a Wigwam: no Windows, no Gates and an Apache inside
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 27.04.2014, 10:55     Titel:
  Antworten mit Zitat      
vieleicht hilft dir das weiter
http://www.mathworks.info/matlabcen.....reader/view_thread/143037
grüße winkow
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Cherup
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2014, 11:01     Titel:
  Antworten mit Zitat      
Hi,
vielen Dank, das hilft mir sehr weiter.
Damit ist die Frage wohl beantwortet

Viele Grüße
Cherup
_________________

Linux is like a Wigwam: no Windows, no Gates and an Apache inside
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2014, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich den Vorschlag aus dem von winkow verlinkten Thread richtig verstehe, dann würden da in diesem Fall 200^9 Permutationen erzeugt. Das dürfte den Speicher des Rechners sprengen.

Letztlich liegt es an dir festzulegen, wie die Komponenten verteilt sein sollen. Eine Möglichkeit zur Erzeugung solcher Vektoren wäre
Code:
v = randi(200, 9, 1);
if sum(v) > 200
v = v/sum(v);
end


Eine andere wäre:
Code:
v = 200*ones(9,1);
while sum(v) > 200
v = randi(200,9,1);
end


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2014, 12:59     Titel:
  Antworten mit Zitat      
Das mit dem Speicherproblem ist mir bewusst, und überlege gerade, wie ich es umgehen kann.
Bei deinem Vorschlag wird der Vektor randomisiert gefüllt, ich bekomme also nicht mit Sicherheit alle Permutationen...
_________________

Linux is like a Wigwam: no Windows, no Gates and an Apache inside
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2014, 13:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Bei deinem Vorschlag wird der Vektor randomisiert gefüllt, ich bekomme also nicht mit Sicherheit alle Permutationen.

Nein. Es ist aber ein Ding der Unmöglichkeit, alle 5.12e20 Kombinationen zu "bekommen". Und selbst wenn du sie "bekommen" könntest, wird man es nicht erwarten können, bis sie verarbeitet sind.

Gehen wir das doch mal von einer anderen Seite an: welches Problem möchtest du letztlich lösen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 29.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2014, 13:09     Titel:
  Antworten mit Zitat      
ich brauche ja nicht alle permutationen, sondern nur die mit einer Gesamtsumme bis 200. dadurch wird es letzlich möglich...
ich werde es wohl doch per brute-force machen müssen...
_________________

Linux is like a Wigwam: no Windows, no Gates and an Apache inside
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 27.04.2014, 13:27     Titel:
  Antworten mit Zitat      
Hallo,

auf die Gefahr hin, dass ich mich wiederhole: was willst du denn mit diesen Permutationen machen?

Selbst wenn man nur Zahlen bis 22 zulassen würde, wären es immer noch 1.2e12 Kombinationen, also weiterhin zu viele zum Speichern und wahrscheinlich auch zum Verarbeiten.

Grüße,
Harald
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.