|
|
Fehlermeldung bei if-Anweisung |
|
Shavens |

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 20.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.03.2013, 21:36
Titel: Fehlermeldung bei if-Anweisung
|
 |
|
 |
|
Guten Abend zusammen,
ich bin Matlab-Einsteiger und habe schon in Foren die auftretende Fehlermeldung gesucht und leider keine Antwort für mein Problem gefunden.
In meinem Skript wird ein Mittelwert x_arith von aufgenommenen Messwerten ab einem bestimmten Zeitpunkt berechnet. Dies läuft in einer for-Schleife ab, bei der immer eine neue Datei eingelesen wird, x-Arith berechnet wird und dann zur nächsten Datei übergegangen wird. Ich erhalte demnach für jeden Durchlauf der Schleife einen Vektor x_arith von meinetwegen 100 Werten. Jetzt möchte ich überprüfen, wann dieser Wert oberhalb oder unterhalb von Werten liegt, die ich zuvor vorgegeben habe. Jetzt bekomme ich beim Durchlauf die Fehlermeldung:
Operands to the || and && operators must be convertible to logical scalar values.
Hier ist der Code:
Zitat: |
p=Soll(t_sprung)/10-2; --> hier werden die "Grenzen" bestimmt
o=Soll(t_sprung)/10+2;
for n=1:length(x_arith)
if x_arith(n)>p && x_arith(n)<o
x_stat(n)=1;
else
x_stat(n)=0;
end
end
|
Verstehe die Fehlermeldung nicht, da ich doch einen Wert übergebe. Mein Ziel ist es den Wert x_arith zu ermitteln, der zum ersten Mal innerhalb der "Grenzen" liegt. Das wäre dann der erste Wert x_stat(n) bei dem eine 1 steht...
Ich weiß, dass das sehr ausführlich war, hoffe ich konnte es gut beschreiben. Bei Fragen bitte einfach fragen:-). Wäre für eure Hilfe sehr dankbar.
Danke und Gruß
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.03.2013, 23:28
Titel:
|
 |
Hallo,
die Fehlermeldung legt nahe, bei der if-Bedingung irgendwo Vektoren im Spiel sind, z.B. o und p.
Man müsste Testdaten oder zumindest die Datentypen und Dimensionen von x_arith, Soll und t_sprung wissen, um dir weiterhelfen zu können.
Grüße,
Harald
|
|
|
Shavens |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 20.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.03.2013, 00:17
Titel:
|
 |
Hallo,
erstmal danke für die schnelle Antwort. Die Daten liegen alle als double-Datentypen vor. Soll ist zB 3922x1 double und x_arith ist dann so in etwa 60x1 double. Hilft das weiter oder war was anderes gemeint?
Gruß
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 30.03.2013, 10:52
Titel:
|
 |
Hallo,
ja, das ist ein Anfang. Nun fehlt noch t_sprung. Ist das ein Skalar oder ein Vektor?
Grüße,
Harald
|
|
|
Shavens |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 31
|
 |
|
 |
Anmeldedatum: 20.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.03.2013, 15:21
Titel:
|
 |
Hallo,
vielen Dank für deine Hilfe, deine Nachfrage hat mich schon auf die Lösung gebracht. Es war ein Vektor und ich brauchte natürlich ein Skalar, habe das korregiert und jetzt läuft es.
Vielen Dank
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 01.04.2013, 13:19
Titel: Re: Fehlermeldung bei if-Anweisung
|
 |
Hallo Shavens,
Das ist sehr merkwürdig. Ich sehe nicht, wieso hier && keine LOGICAL Scalars als Operanden bekommt. Ist das wirklich eine Kopie aus Deinem Code, oder hast Du es für das Posten im Forum verändert?
Noch ein anderer Vorschlag: x_stat in jeder Iteration wachsne zu lassen ist extrem ineffizient. Dazu wird nämlich nicht ein Array der Länge "length(x_arith)" erzeugt, sondern "length(x_arith)" Arrays, so dass man insgesamt Speicher für "sum(1:length(x_arith))" Elemente allozieren muss. Und das wächst wirklich sehr schnell. Deshalb wäre eine Pre-allocation (suche im Forum nach diesem Ausdruck) oder eine vektorisierte Methode sinnvoll:
Gruß, Jan
|
|
|
|
|
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.
|
|