|
|
Funktion für "ist-noch-nicht"-Abgleich |
|
ThoRie |
Forum-Anfänger
|
|
Beiträge: 34
|
|
|
|
Anmeldedatum: 22.05.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.08.2019, 11:58
Titel: Funktion für "ist-noch-nicht"-Abgleich
|
|
Hallo
Ich habe mich mal an einem kleinen Test versucht. Und zwar geht es um folgenden code (der so nicht funktioniert, wie er soll):
Und zwar soll er bis zur if-Abfrage alles genau so machen, wie es der Fall ist. Also das funktioniert schon mal. Aber genau in diesem if-teil liegt der Fehler.
Jetzt möchte ich dem Programm sagen, dass er mir den Vektor genau dann ausgeben soll, wenn es keine Dopplungen gibt. Also gibt es ja 6 Möglichkeiten (dafür der Laufindex b, damit man das direkt erkennen kann).
Wie kann ich das dem Programm sagen?
PS.: Der Hintergrund ist, dass ich das ganze dann in abgewandelter Form auf eine 9x9-Matrix übertragen möchte, aber wenigstens erst einmal eine Grundidee brauche.
|
|
|
|
|
sijuherm |
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 01.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 21.08.2019, 12:25
Titel:
|
|
Mal davon abgesehen, dass der Code nicht in Matlab läuft, scheint mir das auch reichlich kompliziert. Bin mir auch nicht sicher, was du eigentlich willst. Du willst einen Vektor (oder später eine Matrix?) ausgeben lassen, wenn kein Element mehrfach vorkommt?
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 21.08.2019, 12:36
Titel: Re: Funktion für "ist-noch-nicht"-Abgleich
|
|
|
|
|
Hallo ThoRie,
Zitat: |
Und zwar soll er bis zur if-Abfrage alles genau so machen, wie es der Fall ist. Also das funktioniert schon mal. |
Wieso meinst du, dass das funktioniert?
for a(1,1)=1:3
erzeugt eine Fehlermeldung, weil das keine valide Matlab-Syntax ist. Was bedeutet dann "alles genau so machen, wie es der Fall ist"?
Der Ausdruckl "a=a" ist sinnfrei. Wozu soll dies gut sein?
Zitat: |
Jetzt möchte ich dem Programm sagen, dass er mir den Vektor genau dann ausgeben soll, wenn es keine Dopplungen gibt. |
Die Beschreibung ist noch nicht ganz klar. Der gezeigt Code läuft nicht und die Erklärung ist nicht eindeutig. Darum müsste ich raten, was du überhaupt erreichen möchtest. Raten ist aber keine effiziente Problemlösung. Ich versuche es trotzdem:
Du möchtest alle 1x3 Vektoren ausgeben, die die Ziffern 1 bis 3 enthalten, aber keine davon doppelt. Richtig? Dann nennt man das "Permutation". Für solch kleine Probleme läuft ein Brute-Force-Ansatz mit Schleifen, aber mit wachsender Größe des Problems explodiert die benötigte Rechnenzeit.
Zitat: |
PS.: Der Hintergrund ist, dass ich das ganze dann in abgewandelter Form auf eine 9x9-Matrix übertragen möchte, aber wenigstens erst einmal eine Grundidee brauche. |
In abgewandelter Form?! Das ist also gar nicht das eigentliche Problem, das du lösen möchtest?
Was soll diese Zeile bewirken? any(a) ist TRUE, wenn irgendein Element von a ungleich Null ist. any(a)==a wäre in deinem Fall wohl immer 1, zumindest wenn die FOR-Schleifen so funktionieren würden (was sie aber nicht tun). Dann vergleichst du elementweise: 1==a. Mit dem ~ Operator verneinst du die Ausgabe, bekommst also für a = [1,2,3] die Bedingung [FALSE, TRUE, TRUE]. Da Matlab aber immer skalare Bedingungen benötigt, wird implizit ein
all()
eingefügt.
Möchtest du nur die Anzahl der möglichen Permutationen berechnen, oder brauchst du eine Liste aller möglichen Vektoren?
Dein Code würde so laufen:
Gruß, Jan
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
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.
|
|