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

ifelse&strfind

 

xy12345
Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 07.07.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 10:43     Titel: ifelse&strfind
  Antworten mit Zitat      
Ich habe eine Sequenz, die durch A wieder gegeben wird, B soll darin gesucht werden, was auch klappt. Dann möchte ich folgendes umsetzen, wenn die Sequenz B (nicht) in A gefunden wird, dann soll ein Text übergeben werden. Der Code läuft zwar so durch, aber es passiert nichts und es wird kein Fehler zurückgegeben.

Code:
A=[1 1 1 1 0 0 1 0];
B=[0 1];

if any(isempty(strfind(A,B)))
    str = "Greetings friend";

else
    str="?";

end


Hat irgendjemand eine Ahnung wie ich dafür sorgen kann, dass die if-else Anweisung richtig funktioniert? Die Wiedergabe vom Text ist auch bisher nur Platzhalter. Durch strfind wird auch die Position der Sequenz wiedergegeben, die ich später für einen anderen Datensatz brauche.
Private Nachricht senden Benutzer-Profile anzeigen


ueg
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 15.08.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 11:05     Titel:
  Antworten mit Zitat      
Hallo,

dein Code funktioniert doch einwandfrei, zumindest bei mir. Wink
Wenn du deine Strings ausgegeben haben willst, musst du nur den Strichpunkt nach str = ... entfernen.

Viele Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
xy12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 07.07.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 16:18     Titel: if&else & isempty
  Antworten mit Zitat      
Danke! Das Semikolon habe ich gar nicht mehr gesehen und mich gewundert...

Ich habe das ganze jetzt nochmal erweitert und wieder einen Fehler...
Nochmal zum nachvollziehen, B wird in der Sequenz gesucht. Der Teil event gibt die Zahlenwerte wieder an denen 0 und 1 gefunden werden, aber es werden nicht überall 0 und 1 gefunden, nur an bestimmten Punkten in einem Datensatz der nicht p ist

Wenn B nicht in der Sequenz gefunden wird (das soll der if Teil sein), dann sind die Klammern leer.

Danach möchte ich gerne zwischen zwei Optionen unterscheiden:
-B wird in der Sequenz gefunden d.h. die Klammern sind nicht leer und in p wird an der Stelle geguckt, an der die Sequenz seq bzw. in event gefunden wird. Von dem Punkt an, wird geguckt, ob der Wert von p größer null ist. Das soll die erste elseif Anweisung darstellen
-Die zweite elseif Anweisung soll das ganze durchführen, wenn p gleich null ist

Die Sequenzen sind sonst viel größer und es gibt mehrere für je ein System. Ich habe jetzt ein paar ausgelesen, um daran den Code zu entwickeln

Die Text Elemente kommen nachher auch noch weg. Es sollen entsprechende Werte(true/false) in eine Excel Tabelle geschrieben werden, aber so weit bin ich noch nicht...

Code:
B=[0 1];
event=[585.9      587.6      858.5      725.4];
seq=[0     0     1    0];
p=[157.4  146.7  132.9  678.3];

z=strfind(seq,B)

if any(isempty(strfind(seq,B)))
    str = "Greetings friend"    
elseif any(~isempty(strfind(seq,B)))&&any(p(event(z(end):end)))>0
    str="?"
elseif any(~isempty(strfind(seq,B)))&&any(p(event(z(end):end)))==0
    str="Hello World"
end


Das große Problem ist der any(p(event(z(end):end))). Wie schreibe ich den Teil am besten ohne dauernd Fehlermeldung zu bekommen?
Private Nachricht senden Benutzer-Profile anzeigen
 
xy12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 19
Anmeldedatum: 07.07.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2021, 19:34     Titel: ifelse&strfind
  Antworten mit Zitat      
Alternativ würde ich das ganze so programmieren:

Code:
B=[0 1];

event=[585.9      587.6      858.5      725.4];
seq=[0     0     1    0];
p=[157.4  146.7  132.9  678.3];

z=strfind(seq,B)

if z==[]
   str = "Greetings friend"
elseif z~=[]&&any(p(event(z(end):end)))>0
    str="?"
elseif z~=[]&&any(p(event(z(end):end)))=0
     str="Hello World"
end


Dann gibt es wieder Probleme, damit das && nur logical operator nimmt.
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.