|
thomas0815 |

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.09.2010, 17:26
Titel: logische Indizierung
|
 |
Hallo zusammen,
ich möchte folgenden Ausdruck über logische Indizierung formulieren, damit das alles etwas schneller geht. Aber mir fehlt hier der Ansatz
Ich habe für die erste if-Anweisung folgenden Ansatz, aber der funktioniert so nicht:
weil ich die und-bedingung da nicht mit rein bekomme.
Wenn jemand Hinweise hast, dann wäre ich dafür sehr dankbar.
Viele Grüße,
Thomas
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.09.2010, 18:03
Titel:
|
 |
Hallo,
erstmal Rückfragen:
Ist mit
gemeint, dass alle Elemente der Spalte diese Bedingung erfüllen sollen?
Was soll mit den i_out(i,j) passieren, die nicht explizit belegt werden?
Hast du i_out außerhalb der Matrix vorbelegt (z.B. mit zeros)?
Grüße,
Harald
|
|
|
thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2010, 09:29
Titel:
|
 |
Hallo Harald,
danke für deine Antwort. Ja, mit dem ersten Ausdruck sollen jedes Element der Spalte überprüft werden, ob die Bedingung erfüllt ist.
i_in und i_out sind mit zeros vorbelegt.
wenn jetzt z.B. ein Element von G_i(:,j die Bedingung G_i(i,j)/Cap_Max<=1 & G_i(:,j)/Cap_Max>=0.5 erfüllt, dann soll in i_out(i,j) der Wert 0.25 stehen.
Ist es jetzt etwas verständlicher?
Viele Grüße,
Thomas
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.09.2010, 11:42
Titel: Re: logische Indizierung
|
 |
Hallo Thomas,
also meinst Du statt:
Verstehe ich das richtig?
Dann könntest Du die Vektoren aus den FOR-Schleifen herausnehmen und statt der Indices i und j einfügen.
Gruß, Jan
|
|
|
thomas0815 |
Themenstarter

Forum-Century
|
 |
Beiträge: 153
|
 |
|
 |
Anmeldedatum: 13.05.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.09.2010, 14:01
Titel:
|
 |
Hallo,
nein, der obere Ausdruck ist richtig. Es soll nicht für alle Elemente des Vektors >= 0.5 gelten, sondern für jedes einzelne Element des Vektors einzeln geprüft werden, ob die Bedingung erfüllt ist.
Viele Grüße,
Thomas
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.09.2010, 14:49
Titel: Re: logische Indizierung
|
 |
Hallo Thomas,
dann verstehe ich Dein Programm gar nicht, sorry.
Du möchtest also, dass die IF Bedingung ein Vektor ist. Dann wird in Matlab implizit ein ALL ausgeführt:
Meinst Du vielleicht:
Zitat: |
Ich habe für die erste if-Anweisung folgenden Ansatz, aber der funktioniert so nicht:
|
Schon die erste Zeile sollte nicht funktionieren: G_i(:, j) ist ein [nx1] Vektor, der sich nicht mit RESHAPE zu einer Matrix aufblähen läßt. Der &&-Operator funktioniert auch nur mit Skalaren.
Also lass mich noch mal von vorne anfangen:
Gruß, Jan
Zuletzt bearbeitet von Jan S am 23.09.2010, 16:33, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.09.2010, 15:45
Titel:
|
 |
Hallo,
nochmal zur Klarheit: Meinst du wirklich
oder
Ob an der einen Stelle ein i oder ein : steht, macht einen großen Unterschied!
Grüße,
Harald
|
|
|
|
|
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 - 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.
|
|