Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

String Ausschnitt in Cell suchen

 

ThKo26
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 22.01.2019, 13:11     Titel: String Ausschnitt in Cell suchen
  Antworten mit Zitat      
Hallo zusammen,

ich bin gerade bisschen am verzweifeln.

ich habe ein Cell mit mehreren Einträgen. Diese Einträge verändern sich aber.
es bleibt nur ein Ausschnitt immer gleich.

Wie kann ich jetzt mit dem bekannten Ausschnitt den Cell Eintrag finden, der mit diesem Ausschnitt übereinstimmt.

Code:

resnames = {resinhalt.name}; %Cell aray mit 4x1

tf = contains(test,[search '(lap001']) % 1. Variante Fehler, da keinn string
fm = strfind(resnames,[search '(lap001']); % alle fm zeigen []
 


Ich bitte um hilfe.

Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 10.800
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.01.2019, 15:33     Titel: Re: String Ausschnitt in Cell suchen
  Antworten mit Zitat      
Hallo ThKo26,

Deine Frage ist mir noch nicht klar. Kannst du konkrete Inopts posten? Vielleicht enthält {resinhalt.name} den string "[search '(lap001']" einfach nicht.

Zitat:
ich habe ein Cell mit mehreren Einträgen. Diese Einträge verändern sich aber.
es bleibt nur ein Ausschnitt immer gleich.

Das ist nicht verständlich.

Zitat:
Wie kann ich jetzt mit dem bekannten Ausschnitt den Cell Eintrag finden, der mit diesem Ausschnitt übereinstimmt.

Was bedeutet "bekannter Ausschnitt"? Denke daran, dass die Leser keine Ahnung davon haben, was du machst.

Zitat:
Code:
tf = contains(test,[search '(lap001']) % 1. Variante Fehler, da keinn string

Was ist "test"? Welche Fehlermeldung bekommst du? Was ist kein String?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
ThKo26
Themenstarter

Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 22.01.2019, 16:13     Titel:
  Antworten mit Zitat      
Hallo Jan,

{resinhalt.name} enthält den string "[search '(lap001'], da ich, durch einen Breakppoint es gecheckt habe.

z.B.
Testdaten_praktikum_lap000_10122018
Testdaten_praktikum_lap001_11142016
Testdaten_praktikum_lap002_12152017
Testdaten_praktikum_lap003_13192013

Testdaten_praktikum bleibt immer gleich. aber der Rest verändert sich.
die lap nummeriert sich von 0 startend bis zum Wert 010.
Da ich aber immer nur lap001 benötige, suche ich nach
Testdaten_praktikum_lap001, da die hintere Zahlenfolge nicht vorhersehbar ist.

Ich habe das Problem mit folgenden Code gelöst
Code:

fm = strfind(resnames,[search '(lap001']);
 


nun erhalte ich für fm einen cell mit 0, außer an der Stelle, die übereinstimmt.

Nun möchte ich noch die Position bestimmen, an dem die 1 ist.

Hast du dazu eine Idee ? Zur Zeit löse ich es mit if. was sehr unsauber ist.

Gerne auch andere Vorschläge, die vll robuster sind ?

Danke
Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
huhu0815
Forum-Century

Forum-Century


Beiträge: 139
Anmeldedatum: 20.02.14
Wohnort: Dresden
Version: R2013b, R2014b, R2016b, R2018a
     Beitrag Verfasst am: 22.01.2019, 19:18     Titel:
  Antworten mit Zitat      
Hi,

um in einem cell Array nach strings zu suchen, musst du cellfun verwenden oder eine Schleife.
Alternativ hab ich Dir mal einen eleganteren Weg mit regular Expression angehangen.
Code:

% Inititialisieren
resinhalt= struct('name', cell(4,1));
resinhalt(1).name = 'Testdaten_praktikum_lap000_10122018';
resinhalt(3).name = 'Testdaten_praktikum_lap002_12152017';
resinhalt(2).name = 'Testdaten_praktikum_lap001_11142016';
resinhalt(4).name = 'Testdaten_praktikum_lap003_13192013';


% regular expression
expr = '^Testdaten_praktikum_lap(?<ID>\d+)_(?<day>\d{2})(?<month>\d{2})(?<year>\d{4})';

infos = cellfun(@(x)(regexpi(x, expr,'names')), {resinhalt.name}, 'UniformOutput', false);

infos = [infos{:}];
 


Falls noch Fragen sind, einfach melden Smile
_________________

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

Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 21.09.17
Wohnort: ---
Version: 2015b
     Beitrag Verfasst am: 24.01.2019, 12:55     Titel:
  Antworten mit Zitat      
Hey,

danke für den Vorschlag.

ich werde den Versuchmal starten und melde mich.

sieht erstmal sehr komplex aus, für mein problem Smile

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


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.