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

strfind anwenden und alle nan ignorieren

 

wgttzs!
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2022, 15:37     Titel: strfind anwenden und alle nan ignorieren
  Antworten mit Zitat      
Liebe GoMatlab Gemeinde,

Ich habe eine Datei mit zwei Spalten. In der ersten Spalte sind Werte drin, die ich später zum Berechnen brauche. In der zweiten Spalte befinden sich die Werte 0 1 NaN. Ich würde gerne die zweite Spalte mit strfind nach eine gewissen Muster absuchen lassen, um dann genau an den Punkten auf die Werte aus der ersten Spalte zurückgreifen zu können, um diese zum Verrechnen zu nutzen. Nur müssen dafür die NaNs in der zweiten Spalte ignoriert werden, aber gleichzeitig die Muster gefunden werden.

Ich weiss, dass man, dass ganze auch mit any und isnan gelöst werden kann. Ich brauch aber auch die Werte aus der ersten Spalte in denen in der zweiten Spalte nur ein NaN zu finden ist.

Hat irgendeiner eine Idee? Bis jetzt habe ich nichts passendes gefunden.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich habe mal eben einen deiner alten strfind - Threads ausprobiert, und da ging das problemlos mit einem NaN statt einer Zahl.

Es wäre hilfreich, wenn du ein konkretes Beispiel postest, den derzeit verwendeten Code, und das gewünschte Ergebnis.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2022, 17:02     Titel:
  Antworten mit Zitat      
Code:

Signal=[0 99 34 0 150 46 87 176 34 21 90 89 240 0 87];
Bewertung=[NaN 1 NaN 1 0 0 1 1 NaN 0 NaN 1 NaN 1 0];

k=strfind(Bewertung,[1 1]);


Signal und Bewertung kann ich aus meiner Datei ennehmen. Wie kann ich mit k auch das Muster [1 1] finden, ohne, dass strfind von NaN irritiert wird? Also kann ich irgendwie 'omitnan' und strfind kombinieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

ich bekomme mit R2021b als Ergebnis k = 7. Das ist doch das, was du erwarten würdest?

Falls du ein anderes Ergebnis bekommst, bitte das verwendete Release angeben.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2022, 17:22     Titel:
  Antworten mit Zitat      
Ich nutzte R2021a . Ich würde aber gerne noch neben k=7 auch k=12 finden und das NaN zwischen 1 NaN 1 ignorieren können.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2022, 17:40     Titel:
  Antworten mit Zitat      
Hallo,

... und vermutlich auch k = 2? Und dann Signal an den Stellen 2, 7, 12 (für diesen Fall)?
Da müsste ich dann auch nochmal überlegen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
wgttzs!
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 62
Anmeldedatum: 02.12.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2022, 17:49     Titel:
  Antworten mit Zitat      
Genau. Ich könnte sowas
Code:
Bewertung(any(isnan(Bewertung),2),:) = [];
darauf anwenden, aber ich brauche nachher auch die Werte in Signal, bei denen ich an der gleichen Stelle in Bewertung ein NaN finde.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.01.2022, 19:37     Titel:
  Antworten mit Zitat      
Hallo,

so kompliziert muss es nicht sein, mit isnan. Wichtig ist aber, aus Signal die entsprechenden Werte zu entfernen.

Code:
fehlend = isnan(Bewertung);
Bewertung(fehlend) = [];
Signal(fehlend) = [];
k=strfind(Bewertung,[1 1]);
Signal(k)


Die k-Werte sind andere, aber Signal(k) sollte passen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.