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

logicals verknüpfung

 

peterlec

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2013, 23:12     Titel: logicals verknüpfung
  Antworten mit Zitat      
Hey,

versuche gerade eine Hausaufgabe zu machen, nur leider komme ich wegen einer fehlermeldung nicht weiter:

Folgendes:

Code:
ok = (werte > 120);
args = find(ok);
if strcmp( entscheidung , 'ja') || strcmp( entscheidung , 'Ja')
ok(args) = NaN;
x = 1:numel(ok);


Code:
NaN's cannot be converted to logicals.

Error in test (line hier zeigt es auf die erste anweisung nach if)
                ok(args) = NaN;


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.03.2013, 00:15     Titel: Re: logicals verknüpfung
  Antworten mit Zitat      
Hallo peterlec,

Die Fehlöermeldung ist eigentlich klar und deutlich:
Der Vektor "ok" hat den Typ LOGICAL. Dieser kann nur die Werte TRUE und FALSE annehmen. Darum kann man ihn nicht auf NaN setzen.

Bemerkung: STRCMPI vergleicht ohne Groß-Kleinschreibung zu beachten:
Code:
if strcmpi(entscheidung , 'ja')

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
peterlec

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.03.2013, 00:20     Titel:
  Antworten mit Zitat      
habs mit deiner lösung ausprobiert, jhedoch bekomme ich dieselbe fehlermeldung.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.03.2013, 00:35     Titel:
  Antworten mit Zitat      
Hallo peterlec,

Bitte lies meine Nachricht nochmal. Ich habe keine Lösung gepostet, sondern das STRCMPI betraf einen anderen Punkt.

Das eigentliche Problem bleibt, dass Du versuchst ein NaN in einen LOGICAL Vektor zu schreiben. Und das kann nicht funktionieren. Ich kann keinen Lösungsvorschlag machen, weil Du nicht erklärt hast, was Du überhaupt erreichen möchtest. Was soll also das NaN im LOGICAL Vektor? Und nachdem Du erfahren hast, dass dies nicht möglich ist, wie könnte sich Dein Problem ohne LOGICAL Vektor oder ohne NaN lösen lassen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 00:26     Titel:
  Antworten mit Zitat      
Jetzt sehe ich mein fehler auch, aber trotzdem weis ich nicht wie ich das löse soll.

ich möchte die Werte die im Bereich zwischen 50 und 1000 liegen, mit NaN ersetzen...


Code:

Regel = (value >50 mymin && value < 1000);        
punkte = find(Regel);
if strcmpi( entscheidung , 'jA')
Regel(punkte) = NaN;
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 30.03.2013, 04:03     Titel:
  Antworten mit Zitat      
Regel und punkte sind doch eh dasselbe?
wie wäre es mit value(Regel)=NaN oder value(punkte)=NaN ?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.03.2013, 21:32     Titel:
  Antworten mit Zitat      
FOlgende fehlermeldung bekomme ich halt mit meinem Beispielcode
Code:
NaN's cannot be converted to logicals.

Error in test (line hier zeigt es auf die erste anweisung nach if)
                ok(args) = NaN;
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 31.03.2013, 03:54     Titel:
  Antworten mit Zitat      
Tja, die richtigen Codefragmente zusammenzufummeln überlasse ich gerne dir!
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 11:15     Titel:
  Antworten mit Zitat      
ich bekomme die gleiche fehlermeldung auch, wenn ich dein vorschlag einbaue , sorry
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 01.04.2013, 11:41     Titel:
  Antworten mit Zitat      
Hallo,

Ich weiß nicht so recht, wie ich es noch sagen soll: Du hast einen Logical Vektor und versuchst NaNs hinwinzuschreiben. Das ist aber nicht möglich, weil Logicals nunmal nur TRUE oder FALSE sein dürfen. Und wenn Du das immer wieder versuchst, obwohl Du bereits darauf hingewiesen wurdest, wird es auch nicht funktionieren.

Zitat:
ich möchte die Werte die im Bereich zwischen 50 und 1000 liegen, mit NaN ersetzen...

Code:
x = 1:2000;   % Testdaten!
x(x > 50 & x < 1000) = NaN;

Hilft das?

Gruß, Jan
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: 01.04.2013, 13:33     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
ich bekomme die gleiche fehlermeldung auch, wenn ich dein vorschlag einbaue , sorry
lol, wenn dein "value"-Vektor nur aus Logicals besteht, hast du irgendwo einen designfehler oder das boolean-konzept gar nicht verstanden.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.04.2013, 15:24     Titel:
  Antworten mit Zitat      
Das problem habe ich jetzt nun verstanden mit den booleans, aber ich möchte nun mein problem lösen

folgende bedingung habe ich
Code:
value >50 mymin && value < 1000


diese werte sollen nun mit NaN überschrieben werden, weil ich anschliessen mit den Nan weiterarbeiten muss..

außer find kenn ich nicht, sorry..

ok = (value >50 mymin && value < 1000);
args = find(ok);
if strcmp( entscheidung , 'ja') || strcmp( entscheidung , 'Ja')
ok(args) = NaN;
x = 1:numel(ok);
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 01.04.2013, 16:41     Titel:
  Antworten mit Zitat      
Anonymous hat Folgendes geschrieben:
ich bekomme die gleiche fehlermeldung auch, wenn ich dein vorschlag einbaue , sorry

Anonymous hat Folgendes geschrieben:


ok = (value >50 mymin && value < 1000);
args = find(ok);
if strcmp( entscheidung , 'ja') || strcmp( entscheidung , 'Ja')
ok(args) = NaN;
x = 1:numel(ok);

AHA. Rolling Eyes

Andy386 hat Folgendes geschrieben:
Tja, die richtigen Codefragmente zusammenzufummeln überlasse ich gerne dir!

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
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: 01.04.2013, 16:41     Titel:
  Antworten mit Zitat      
zur sicherheit:
Andy386 hat Folgendes geschrieben:

wie wäre es mit value(Regel)=NaN oder value(punkte)=NaN ?

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.04.2013, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
folgende bedingung habe ich
Code:
value >50 mymin && value < 1000

Das ist nicht klar. Was ist "mymin"? && benötigt Skalare, wenn value ein Vektor ist, benötigst du den & Operator.

Bitte beantworte noch, ob dies das Problem nicht vielleicht schon löst:
Code:
value(value > 50 & value < 1000) = NaN;


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.