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

Befehl "Finde erste Zeile der Matrix die 'string' enth

 

DaNylz
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.02.2013, 17:14     Titel: Befehl "Finde erste Zeile der Matrix die 'string' enth
  Antworten mit Zitat      
Hallo!

Ich suche einen Befehl der mit als Output die Zeilennummer der Matrix nennt in der das erste mal ein bestimmter String vorkommt.

Danke & LG!

DaNylz
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.02.2013, 00:17     Titel: Re: Befehl "Finde erste Zeile der Matrix die 'string' e
  Antworten mit Zitat      
Hallo DaNylz,

Unter einer "Matrix" versteht man in Matlab zunächst einmal ein 2D-Array vom Typ DOUBLE. Ein "String" ist ein [1 x N] Arrays von Type CHAR.

Möglicherweise suchst Du nach:
Code:
find(strcmp(Data, 'TheString'), 1)

Aber ganz klar ist die Frage noch nicht.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2013, 00:57     Titel:
  Antworten mit Zitat      
Hi!

Erstmal Danke für deine Antwort.

Ich habe eine Logdatei von einer Messung importiert.
Diese enthält Zahlen, aber in manchen Zellen auch Text.
Sie hat ca. 8 Spalten und über 900 Zeilen.
Somit habe ich im Workspace eine Matrix mit Strings.
Ich will nun die erste Zeile herausfinden in der der Begriff "fixation" vorkommt, weil dort ein bestimmter Punkt der Messung erreicht ist, den
ich eben erfassen will.

Hier was passiert, wenn ich deine o.g. Syntax benutze:

Code:
>> find(strcmp(Data01Copy, 'fixation'), 1)

ans =

        2927
 


Wenn ich den Wert 1 erhöhe kriege ich mehr Werte dieser Art, keiner Davon findet sich jedoch in der Matrix bzw. in einer Relativen Häufigkeit von Werten o.Ä. wieder.


Danke & lg
Private Nachricht senden Benutzer-Profile anzeigen
 
DaNylz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2013, 01:19     Titel:
  Antworten mit Zitat      
Folgendes funktioniert ganz gut:

Code:
Var1 = Data1(strcmp(Data1(:,3),'fixation'),5)


In Spalte 3 befindet sich der String "fixation" und in Spalte 5 der Timecode den ich haben will.

Output ist eine Stringliste mit den Timecodes aller Spalten in denen "fixation" vorkommt.

Jetzt die weiterführende Frage:

Wie kriege ich nur den ersten Wert dieser Liste in eine Variable?

Danke & LG
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.02.2013, 11:18     Titel:
  Antworten mit Zitat      
Hallo DaNylz,

Zitat:
Ich habe eine Logdatei von einer Messung importiert.

Bitte erkläre das genauer: Als string, als File-Name, als Cell String, per IMPORTDATA, FREAD, FSCANF, TEXTSCAN, XLSREAD?

Zitat:
Diese enthält Zahlen, aber in manchen Zellen auch Text.
Sie hat ca. 8 Spalten und über 900 Zeilen.
Somit habe ich im Workspace eine Matrix mit Strings.

Das ist, wie ich bereits erklärt habe, in Matlab nicht möglich. Bitte versuche Dich an die Standard-Nomenklatur zu halten, weil wir sonst raten müssen, wovon Du eigentlich sprichst: Eine Matrix kann in Matlab keine Strings enthalten. Meinst Du eine Cell-Matrix?
Wenn die importierten Daten Strings sind, wie unterscheidest Du dann "Text" und "Zahlen"? Es sind ja beides Strings, oder?

Zitat:
Wenn ich den Wert 1 erhöhe kriege ich mehr Werte dieser Art, keiner Davon findet sich jedoch in der Matrix bzw. in einer Relativen Häufigkeit von Werten o.Ä. wieder.

Diesen Satz verstehe ich nicht. Wenn Du welchen Wert um 1 erhöhst und wieso erhöhst Du ihn um 1? Und woher stammt plötzlich die relative Häufigkeit?

Zitat:
In Spalte 3 befindet sich der String "fixation" und in Spalte 5 der Timecode den ich haben will.

Woher kommen nun auf einmal Spalten?

Zitat:
Output ist eine Stringliste mit den Timecodes aller Spalten in denen "fixation" vorkommt.

Das ist der Output wovon? Und was genau ist eine "String Liste"?

Zitat:
Wie kriege ich nur den ersten Wert dieser Liste in eine Variable?

Da mir nicht klar ist, von welcher Liste Du sprichst, weiß ich die Antwort nicht. Übliche wäre soetwas:
Code:
A = Liste{1}


Bitte bedenke, dass wir als Leser überhaupt keine Ahnung haben, was Du machst. Wir wissen nur das, was Du schreibst. Für eine sinnvolle Antwort fehlen aber bisher wichtige Details, nämlich eine genau Definition der vorhandenen Inputs und der gewünschten Outputs.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 14.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.02.2013, 13:13     Titel:
  Antworten mit Zitat      
HI!

Ja dann wird es wohl eine Cell Matrix sein.
Auf die waren auch die Spaltenbezeichnungen bezogen.

Entsprechend deiner letzten Antwort hat es jetzt geklappt:


Ich frage aus der Cell-Matrix den Eintrag aus Spalte 5 jeder Zeile ab, die in Spalte 3 den String "fixation" enthält.
Code:
Var1 = Data1(strcmp(Data1(:,3),'fixation'),5)


Danach wandle ich den Output (eine Liste von Zeitangaben als Zahlen die aber strings sind) in numerische umwandeln:

Code:
Var1_Val1 = str2num(char(Var1))



Dann lasse ich mir den ersten Wert dieses nun numerischen Outputs nennen:

Code:
Var1_Val1(1)

    ans = '12345'
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.