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

problem logischer ausdruck?

 

xPashAx
Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 17.06.2010, 09:33     Titel: problem logischer ausdruck?
  Antworten mit Zitat      
hi leute,
ich hätte da ne simple frage.
Code:

a=[1 1 1 1 2 2 2 2 3 3 3 3 2 2 2 1 1 1 ];
if (a(1:3)==1)&&(a(9:11)==3)
disp('ok')
end
 

-von 1 bis 3 , habe ich ja einser
-von 9 bis 11 , habe ich ja dreier

bekomme trotzdem die fehlermeldung
Operands to the || and && operators must be convertible to logical scalar values.

was ist hier falsch=
Private Nachricht senden Benutzer-Profile anzeigen


Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 17.06.2010, 09:50     Titel:
  Antworten mit Zitat      
Hi,

du kannst nicht a(1:3) (eine matrix) mit 1 (eine zahl) vergleichen.
Code:

a=[1 1 1 1 2 2 2 2 3 3 3 3 2 2 2 1 1 1 ];
if (isequal(a(1:3),[1 1 1])&& isequal(a(9:11),[3 3 3]))
disp('ok')
end
 

_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 17.06.2010, 09:59     Titel:
  Antworten mit Zitat      
aber wenn ich nur

Code:

if (a(1:3)==1)
disp('ok')
end
 


schreibe das funktioniert dann.
das widerspricht jetzt was sagst oder ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 17.06.2010, 10:11     Titel:
  Antworten mit Zitat      
ja du hast recht, ich glaube es liegt an die && links und rechts müssen skalare sein :?: :!:
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 17.06.2010, 10:14     Titel:
  Antworten mit Zitat      
hmm mal schauen wer eine erklärung und eine lösung dafür hat Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.06.2010, 10:51     Titel:
  Antworten mit Zitat      
Hallo

Bei Verknüpfungen wie &&, müssen beide Seiten aus Skalaren bestehen, sonst bekommt man solche Fehlermeldung:
Zitat:
Operands to the || and && operators must be convertible to logical scalar values.


Arrays kann man entweder mit einfachen & verknüpfen oder Schlüsselwort AND verwenden. Genau wie bei Addition, müssen die Dimension von beiden Arrays stimmen
Code:

a=[1 1  1 1 2  2 2 2  3 3 3  3 2 2  2 1 1  1 ];
if  (a(1:3)==1)&(a(9:11)==3)
   disp('ok')
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2010, 10:52     Titel:
  Antworten mit Zitat      
Hallo

wenn man es sich schritt für schritt anschaut wird es klar:

Code:
und
Code:
a(9:11)==3

sind 1x3-Matrizen mit logischen Einträgen

in der Fehlermeldung steht ja schon, dass && nur mit logischen Skalaren umgehen kann daher musst du die Ausdrücke erstmal zu Skalaren reduzieren. Ich nehme einfach mal an su meintest dass hier:

Code:
all(a(1:3)==1)&&all(a(9:11)==3)


Gruß Lord nibbler
 
xPashAx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 294
Anmeldedatum: 18.05.09
Wohnort: Heidelberg
Version: ---
     Beitrag Verfasst am: 17.06.2010, 11:13     Titel:
  Antworten mit Zitat      
jepp danke mit deinem beispiel müssen sie net gleich lang sein Smile
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.