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

strcmp zusätzlich optionen mgl?

 

Martin1986
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 14.03.2014, 16:27     Titel: strcmp zusätzlich optionen mgl?
  Antworten mit Zitat      
hallo ich habe folgendes Problem und zwar durchsuche ich eine große Cellmatrix nach Einträgen aus einem Vektor das Problem ist das diese String Einträge machmal vorn bzw hinten angestellt ein Leerzeichen haben.
daher funktionert
Code:

strings={'bla','blubb'};
[a,b]=cellfun(@(x) find(strcmp(raw,x)), strings);

nicht zuverlässig (da ja nur die exaten Matches gezeigt werden) regexp böte die mgl die option 'freespacings' zu verwenden um genau dies zu vermeiden. Leider enthält raw auch cells die keine strings sind daher funktioniert regexp in diesem Fall nicht...
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.03.2014, 16:48     Titel:
  Antworten mit Zitat      
Hallo

verwende vorher STRTRIM um Leerzeichen Vorne und Hinten zu entfernen danach STRCMP

Aber an dieser Stelle wäre ISMEMBER vielleicht sinnvoller

Code:

str  = {'eins', 'zwei'}
raw = strtrim(raw)

pos = ismember(raw, str);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Themenstarter

Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 14.03.2014, 17:40     Titel:
  Antworten mit Zitat      
strtrim hat leider die selbe Eigenschaft wie regexp es geht nur für Cells in denen nur Strings enthalten sind. raw enthält strings und leider auch Zahlen die später noch benötigt werden. raw kommt aus einer Exceldatei welche ein fixes Format hat, welches so blöd ist das ich nicht die getrennten Daten sondern die rohdaten nehmen muss um indexe zubestimmen die für beide gültig sind.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.03.2014, 18:20     Titel:
  Antworten mit Zitat      
Hallo,

dann schreib doch eine etwas längere Funktion, die auf den Inhalt jeder Cell angewendet wird und zunächst testet, ob es sich dabei um einen String handelt (ischar). Anschließend kannst du dann wie gewünscht weiterarbeiten.

Der Variablenname 'raw' klingt nach dem dritten Rückgabeargument von xlsread. Es ist meines Erachtens nur in den allerwenigsten Fällen sinnvoll, dieses Argument zu verwenden, da die numerischen und nichtnumerischen Daten getrennt voneinander leichter zu verarbeiten sind - siehe z.B. hier.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 14.03.2014, 21:16     Titel:
  Antworten mit Zitat      
Ach so habe das wohl überlesen,

dann muss man prüfen ob die Cell String sind:

Code:


C   = {'eins ', 1 ' zwei '; 1, 'eins', 2}
pos = cellfun(@ischar,C)
C(pos)= strtrim(C(pos))
find(strcmp(C, 'eins'))
 


Sonst musst du wirklich aus XLSREAD statt 3 Ausgabeparameter, den ersten und zweiten verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
Martin1986
Themenstarter

Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 20.06.11
Wohnort: ---
Version: Win 2016b Linux 2016b
     Beitrag Verfasst am: 16.03.2014, 23:21     Titel:
  Antworten mit Zitat      
danke ich werde mein Glück versuchen, die ersten 2 sind leider keine Option Sad
da wie gesagt die formatierung der Exceldatei nicht gerade glücklich ist Sad
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.