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

logische Verknüpfungen

 

cornetto1234
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 23.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 19:37     Titel: logische Verknüpfungen
  Antworten mit Zitat      
Hallo,

ich möchte eine etwas längere logische Verknüpfung erstellen,
aber ich bekomms einfach nicht richtig hin. Kann mir jemand helfen?

Also, ich möchte, dass eine if Anweidung nur ausgeführt wird,
wenn entweder Aussage (A und B) erfüllt ist oder aber Aussage (C und D)

Ich hätte gedacht, dass man es wie folgt formulieren könnte:
Code:

if (A==1&B==1)|(C==1&D==1)
 


aber es funktioniert bei mir nicht so richtig! Wäre diese Schreibweise den vom Prinzip her richtig?
Weil dann wüßte ich nämlich, dass es vermutlich an der Formulierung der einzelnen Aussagen liegt. Das könnte nämlich auch sein. Bei mir sieht die ganze Formulierung nämlich so aus:

Code:

abs(cut1_x-0)<eps&abs(cut1_y-0)<eps|
 abs(cut1_x-0)<eps&abs(cut1_y-1)<eps
 


Was ist hierdran falsch?

Kann mir jemand helfen?

Viele grüße,
cornetto
Private Nachricht senden Benutzer-Profile anzeigen


kampmann-peine
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 02.07.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 19:46     Titel:
  Antworten mit Zitat      
hallo - versuch mal, den Ausdruck in "Boole'scher Algebra" zu formulieren.
und dann zu programmieren (unter Benutzung von Wahrheitstafeln!)
Viel Erfolg

JK
_________________

===========================
IBK-Consult - Peine, D-31228
www.xing.com/net/mathe
===========================
Private Nachricht senden Benutzer-Profile anzeigen
 
cornetto1234
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 23.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 20:16     Titel:
  Antworten mit Zitat      
also, ich komm irgendwie nicht weiter.


Das ist so verschachtelt?! Sad

Kann man das nicht irgendwie viel einfacher formulieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 28.08.2009, 20:27     Titel:
  Antworten mit Zitat      
also, vom Prinzip her...
... zumindest für Vektoren... aber müsstest du dann nicht noch ein all oder so nehmen damits durchs if geht ?
Kommt ne Fehlermeldung oder nur nicht das raus, was soll ?

Für Skalare will Matlab immer doppelte Zeichen sehen, also anstelle | ein ||
Private Nachricht senden Benutzer-Profile anzeigen
 
cornetto1234
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 23.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2009, 20:52     Titel:
  Antworten mit Zitat      
Hallo,


es kommt eine Fehlermedung( auch wenn ich | durch || ersetze)

z.B.wenn ich folgendes probiere

Code:

if (abs(cut1_x-0)<eps)==1&(abs(cut1_y-0)<eps)==1||
    (abs(cut1_x-0)<eps)==1&(abs(cut1_y-1)<eps)==1||
    (abs(cut1_x-1.7)<eps)==1&(abs(cut1_y-0)<eps)==1||
    (abs(cut1_x-1.7)<eps)==1&(abs(cut1_y-3)<eps)==1||
 


sagt Matlab das hier

Code:

??? Error: File: C:\Programme\MATLAB7\work\b.m Line: 683 Column: 51
Incomplete or misformed expression or statement.
 


Was könnte ich ändern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.450
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.08.2009, 22:09     Titel:
  Antworten mit Zitat      
Erstmal die ganzen == 1 weglassen. Wozu sollen die gut sein?

Ansonsten würde ich auf den ersten Blick sagen, dass das gleichbedeutend ist mit

Code:
if (abs(cut1_x-0)<eps | abs(cut1_x-1.7)<eps) & (abs(cut1_y-0)<eps | abs(cut1_y-3)<eps)

(Klammern habe ich nicht gezählt)

Wenns funktioniert, kann man immer noch | durch || und & durch && ersetzen.

P.S. Ich würde nicht < eps, sondern < 1e-12 oder so nehmen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
brunowe
Forum-Anfänger

Forum-Anfänger



Beiträge: 40
Anmeldedatum: 15.08.09
Wohnort: Augsburg
Version: R2008a
     Beitrag Verfasst am: 28.08.2009, 22:35     Titel:
  Antworten mit Zitat      
Hallo Cornetto1234,

nun, ich bin Matlab Anfänger, aber muss man nicht wenn man einen Ausdruck über mehr als eine Zeile schreibt das Zeilenende mit ... abschließen damit Matlab weiß, daß der Ausdruck in der folgenden Zeile weiter geht?

Also z.B.:
Code:


if (abs(cut1_x-0)<eps)==1&(abs(cut1_y-0)<eps)==1||...
    (abs(cut1_x-0)<eps)==1&(abs(cut1_y-1)<eps)==1||...
    (abs(cut1_x-1.7)<eps)==1&(abs(cut1_y-0)<eps)==1||...
    (abs(cut1_x-1.7)<eps)==1&(abs(cut1_y-3)<eps)==1||...
%weitere log. Verknüpfungen
 


Gruß, brunowe
P.S.: den Sinn der ==1 sehe ich auch nicht, das ist Quatsch!
Private Nachricht senden Benutzer-Profile anzeigen
 
cornetto1234
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 23.08.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.08.2009, 10:22     Titel:
  Antworten mit Zitat      
Danke,

das mit den Punkten am Ende einer Zeile habe ich total vergessen gehabt. Sad

viele Grüße!
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 - 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.