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

For-Schleife bis NaN

 

Peter P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2015, 13:01     Titel: For-Schleife bis NaN
  Antworten mit Zitat      
Hallo zusammen,

ich habe das Problem, dass meine for-schleife bis zu den Einträgen laufen soll, die mit NaN deklariert sind.

Code:

for i = 1:length(V_A)
{...}

          if V_A(ind(i),k)<V_B(i,1) && ind(i+1)~= NaN
{...}
         end;
end;
 


Leider funktioniert diese Anweisung nicht. Kann mir jmd. weiterhelfen?

Grüße und Danke


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2015, 13:23     Titel:
  Antworten mit Zitat      
Hallo,

Code:

verwenden.

Alternativ vor der for-Schleife mit isnan schauen, wo das erste NaN ist, und nur bis dorthin laufen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2015, 14:18     Titel:
  Antworten mit Zitat      
Gibt es denn noch eine Möglichkeit, dies direkt in die Schleife zu implementieren, ohne isnan?
Z.B. die Schleife bis zur letzten Zahl laufen zu lassen?
 
AndyAndyAndy
Forum-Anfänger

Forum-Anfänger


Beiträge: 44
Anmeldedatum: 22.12.14
Wohnort: Nähe Offenburg
Version: GNU Octave 4.1.0+
     Beitrag Verfasst am: 03.01.2015, 14:52     Titel:
  Antworten mit Zitat      
Peter P. hat Folgendes geschrieben:
Gibt es denn noch eine Möglichkeit, dies direkt in die Schleife zu implementieren, ohne isnan?
Z.B. die Schleife bis zur letzten Zahl laufen zu lassen?


Du kannst vorher das erste Auftreten von NaN bestimmen
[code]
tmp = find (isnan (V_A), 1) - 1;
[code]

und dann deine Schleife nur bis tmp laufen lassen. Ohne mit etwas mehr Informationen rüberzukommen, was dir an Haralds Lösung nicht gefällt, wird es schwierig dir zu helfen.

Btw, außerdem ist so gut wie jede Aufgabe vektorisierbar, d.h. ohne for-schleife lösbar.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.01.2015, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

grundsätzlich liefern Vergleiche mit NaN über == oder ~= immer false.
Man muss also in irgendeiner Form mit isnan arbeiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter P.

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2015, 20:41     Titel:
  Antworten mit Zitat      
Hallo Andy & Harald,

danke für den Tipp mit dem vektorisieren!

Ich wollte die Toolgröße nicht unbedingt noch weiter aufbauen, dennoch muss es auf verschiedene, weitere Anwendungen passen, weswegen ich nicht einfach die Lösung nur einmal durchlaufen lassen kann. Ich habe es jetzt etwas anders gelöst, weil ich auch Vektoren in meiner Matrix habe, die nicht NaN sind.

Code:

 for i = 3:3:156
     if (find(isnan(V_A(:,i)),1)) == 1;
     tmp(i) = find (isnan (V_A(:,i)), 1);
     tmp(i) = tmp(i)-1;
       
     else tmp(i) = length(V_A(:,i));
     end;
 end;
 


Das funktioniert leider auch nicht so recht, anscheinend geht er sofort auf else über. Habe ich noch etwas übersehen?

Grüße
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.01.2015, 23:04     Titel:
  Antworten mit Zitat      
Hallo,

du vergleichst momentan den Index des ersten NaN-Elements mit 1.
Vermutlich möchtest du
Code:


Grüße,
Harald
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.