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

Datenauswahl aus cellarray

 

Stroh

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 14:16     Titel: Datenauswahl aus cellarray
  Antworten mit Zitat      
hi leute,
ich kenn mich mit cellarrays kaum aus, desshalb wende ich mich an euch Smile

ich habe ein 4x2 cellarray (kleines beispiel), in der ersten spalte stehen ID's, in der zweiten der zugehörige name. ich brauche den namen zu einer vorher ermittelten ID. da die ID's weder sortiert noch durchgehend sind, kann ich nicht einfach sagen
Code:
name = Data{id,2};


eine schleife, die die erste spalte durchläuft, bis die id gefunden wurde, scheint mir übertrieben...
gibt es da eine möglichkeit oder eine funktion, auf die richtige zeile bzw den namen direkt zu kommen?

grüße, stroh


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 23.05.2011, 14:27     Titel:
  Antworten mit Zitat      
Hallo

du kannst ids aus Cell zu einem Vektor extrahieren, und dann diesen durchsuchen:
Code:

search_id= 1
ids      = [Data{:,1}];
name = Data{ids==search_id,2}
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Stroh

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 15:48     Titel:
  Antworten mit Zitat      
vielen dank, funktioniert super Smile
 
Stroh

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.06.2011, 16:56     Titel:
  Antworten mit Zitat      
und wieder ein problem Rolling Eyes
diesmal stehen in dem cell array strings. ich habe mir auch schon einen zeilenvektor erstellt, welche namen davon ich haben möchte.
das extrahieren funktioniert nicht, da matlab die einzelnen strings zu einen aneinander kettet
wenn ich es mit
Code:
Names = Data(Rows,3)

versuche, kommt folgenden fehlermeldung:
??? Subscript indices must either be real positive integers or logicals.
in Rows stehen aber nur 1en und 0en... ich weiß nicht mehr weiter, kann mir jmd helfen Question
grüße, stroh
 
Dready
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2011, 14:10     Titel:
  Antworten mit Zitat      
Ich hab ein ähnliches Problem, daher benutze ich mal den Thread.

Also prinzipiell ist das Durchsuchen kein Problem, aber in meinem Cell-Array(hat ca. 1000 Zeilen, 1 Spalte) gibt es leere Zeilen. Wenn ich diese in eine Matrix bzw. Vektor umwandle, verliere ich die leeren Zeilen. Diese können beliebig dazwischen liegen.

Ich benötige aber die genaue Zeile im ursprünglichem Array. Ich suche also eine Funktion, die mir sagt,dass der Wert 5 in Zeile 20 und 800 oder sowas vorkommt, ohne Probleme mit den leeren Zeilen zu haben. Hat da jemand eine Idee?

PS. Ich will nur sehr ungern eine Schleife verwenden.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 21.10.2011, 09:14     Titel:
  Antworten mit Zitat      
Hallo

die Schleife musst du ohne hin verwenden. weil du wg Leerer Felder Position verlieren wirst.

also so kann man es eventuell erweitern
Code:

Data       = {1; 2; 3;[];5}
search_id  = 5;
pos       = find(~cellfun('isempty',Data))
ids        = [Data{:,1}];

name       = Data{pos(ids==search_id),1}
 


PS: Stroh, Cell of Strings kann man auch direkt mit STRCMP durchsuchen
Private Nachricht senden Benutzer-Profile anzeigen
 
Dready
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 31.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2011, 19:28     Titel:
  Antworten mit Zitat      
Ja, so sollte es auch gehen. Habs jetzt aber anders gelöst. Da ich die 0 nie verwende, schreib ich in alle leeren Zeilen eine 0(über cellfun). Dann wandle ich das cell-array in eine Matrix um und kann dann die find()-Funktion verwenden. Klappt auch bei recht großen Datenmengen(4000 Zeilen) schnell und gut.
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.