|
|
Berechnung einer neuen Variable (if bzw. elseif) |
|
cpo |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 05.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 11:17
Titel: Berechnung einer neuen Variable (if bzw. elseif)
|
 |
Hallo zusammen,
folgendes Problem:
Ich habe zwei Matritzen (a und b) mit positiven und negativen Werten. Aus beiden möchte ich nun eine neue Matrix (c) erstellen, für deren Berechnung folgende Bedingungen gelten sollen:
die Matritzen a und b erscheinen zwar im Workspace, Matrix c wird jedoch nicht erstellt.
Ich hoffe das mir jeamand bei meinem Problem helfen kann.
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 11:39
Titel:
|
 |
Hallo
so ist es falsch, Vergleiche in Bedingung müssen verknüpft sein
(and, or, xor, &,&&, |, ||)
deine Bedingungen sind noch nicht ganz klar,
a >= 0, b >= 0 -- Heißt das z.b , wenn a und b größer?
wenn a oder b größer?
Da es Matrizen sind, sollen es alle Elemente >= 0 sein (all-Befehl) oder reicht nur Ein Element der >= 0 ist (any-Befehl)?
Das ist wichtig,
da die Bedingung sonst nach letztem Element entschieden werden.
Zuletzt bearbeitet von denny am 05.03.2010, 11:41, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 11:39
Titel:
|
 |
Hallo,
logische Bedingungen müssen mit & oder && statt , verknüpft werden.
Das dürfte das Problem sein.
Grüße,
Harald
|
|
|
michai |

Forum-Fortgeschrittener
|
 |
Beiträge: 83
|
 |
|
 |
Anmeldedatum: 22.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 11:44
Titel:
|
 |
|
 |
|
Bekommst du eigentlich Fehlermeldungen, wenn du das so ausführst? Normalerweise sollte er spätestens bei "c=" aussteigen und dann ist klar, dass du c nicht siehst.
Ansonsten wundern mich die Kommas in deinen if-Ausdrücken. In Matlab kannst du mehrere Befehle in eine Zeile schreiben und sie duch Kommas trennen, z.B.
ist das gleiche wie
Somit macht "if a>=0, b>=0" die Prüfung ob a>=0 ist und versucht dann das Kommando b>=0 auszuführen.
Ich vermute, dass du die Bedingungen "ver-und-en" willst. Somit sollte das Ganze "if (a>=0) & (b>=)" heißen.
Dein Code würde also so aussehen:
So funktioniert das Berechnen von c prima. Allerdings noch ein Hinweis zu den Bedingungen (nur für den Fall, dass es nicht so gewollt ist):
Ein "a>=0" prüft, ob alle Elemente in a größer oder gleich 0 sind. Ist dies der Fall wird das Ergebnis als wahr angesehen. Für a=[-1 2] ist keine deiner Bedingungen wahr, da nie alle Elemente in a gleichzeitig größer, kleiner oder gleich 0 sind. Somit gibt es Fälle, in denen du NIE ein c erhalten wirst!
Edit: Hups! Zu langsam!
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 12:14
Titel:
|
 |
ok, vielleicht ist mein Problem noch nicht ganz klar geworden, ich versuche es mal genauer zu beschreiben:
ich möchte aus den zwei Matrizen a und b ( je 511 Zeilen und 600 spalten) eine Matrix c erstellen.
Für die Matrix c soll gelten:
wenn der Wert einer bestimmten Zelle (z.B. A1) in a >=0 ist und in der gleichen Zelle von b >=0 ist, soll für diese zelle in der neue Matrix (c) die Formel c=abs(b-a) angewendet werden.
u.s.w. für alle übrigen 4 Bedigungen
|
|
|
cpo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 05.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 12:16
Titel:
|
 |
Da war ich wohl beim vorherigen Eintrag als Gast eingelogt...sry
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 12:47
Titel:
|
 |
Wenn Vergleichen und Verändern Elementweise passieren soll, dann ist IF falsch an dieser Stelle.
Da musst du direkt am Matrix operieren.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 13:41
Titel:
|
 |
Hallo,
grundsätzlich stimme ich denny zu. Als Ergänzung: statt
könnte man auch
verwenden.
Grüße,
Harald
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 13:49
Titel:
|
 |
Hallo Harald
sterben etwa and/or-Funktionen aus?
|
|
|
Jan* |

Forum-Century
|
 |
Beiträge: 178
|
 |
|
 |
Anmeldedatum: 06.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2007b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 14:03
Titel:
|
 |
Hallo,
da im Endeffekt vermuktlich die selbe 'and' Funktion aufgerufen wird, wohl eher nicht
Ich finde Haralds Variante von der Lesbarkeit allerdings auch etwas besser.
Gruß Jan
|
|
|
cpo |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 05.03.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 14:19
Titel:
|
 |
Die Lösung von denny funktioniert!
Vielen Dank!
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 14:21
Titel:
|
 |
Nein Jan,
es liegt nicht wirklich an Lesbarkeit, weil in manchen Situationen kann eine Variante viel lesbarer sein, sondern wegen wie in Alltag Verknüpfungen gebraucht werden.
Man sagt ja 10 ist größer 8 und 10 ist größer 7.
Also wenn du wegen Verständnis meinst, ist es besser die Harald's Variante zu benutzen, da bin ich mit dir komplett einverstanden.
PS: Persönlich benutze ich schon Harald's Variante, nur wenn Mlint
mir es markiert, setzte ich halt diese Variante um.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 15:41
Titel:
|
 |
Hallo denny,
natürlich sterben sie nicht aus. Es ging mir wirklich nur um bessere Lesbarkeit.
Grüße,
Harald
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 05.03.2010, 18:14
Titel:
|
 |
Alles Klar!
Bin mit euch Einverstanden!
|
|
|
|
|
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.
|
|