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

Cell-Indices herausfinden

 

KaiS
Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2013, 05:04     Titel: Cell-Indices herausfinden
  Antworten mit Zitat      
Hallo zusammen,

folgendes Beispiel:

Ich habe ein Cell, das wie folgt aussieht:

Code:
A{1} = [2 3]
A{2} = [1 4]


Nun möchte ich gerne, dass mir Matlab automatisch sagen kann, in welchem der beiden (Zellen-)Vektoren der Wert X enthalten ist.
Wenn ich also z.B. wissen will, wo die "4" enthalten ist, dann würde mir Matlab als Ergebnis "2" herausgeben.

Ich hätte dafür eigentlich an den "find"-Befehl gedacht.

Code:
funktioniert aber leider nicht. Hat jmd vllt einen anderen Tipp, wie ich das Problem angehen kann?

Danke schon mal für Hilfe!

LG
Kai
Private Nachricht senden Benutzer-Profile anzeigen


jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2013, 07:25     Titel:
  Antworten mit Zitat      
Hi,

Code:


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: 09.04.2013, 11:12     Titel: Re: Cell-Indices herausfinden
  Antworten mit Zitat      
Hallo KaiS,

CELL2MAT funktioniert dann, wenn alle Cell-Elemente Arrays gleicher Größe enthalten. Andernfalls ist eine eigene Funktion sinnvoll:
Code:
function Index = FindInCell(C, Value)
Found = false(size(C));
for iC = 1:numel(C)
  Found(iC) = any(C{iC} == Value);
end
Index = find(Found);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2013, 12:16     Titel:
  Antworten mit Zitat      
Hallo Jan,

du hast recht, ich nehme leider immer an, dass es sich bei angeführen Beispielen immer um Extrembeispiele handelt.

Für dynamische Größen hätte ich auch noch einen Einzeiler.
Wobei bei "ind == x" ... x der Wert ist nachdem gesucht wird.

Code:
find(cellfun(@(ind) ~isempty(find(ind==5)), A))


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: 09.04.2013, 17:09     Titel:
  Antworten mit Zitat      
Hallo jurtsche,

STRFIND funktioniert auch mit Zahlen statt mit Buchstaben. Ob das auch für Cells gilt, kann ich gerade nicht ausprobieren.

Wie wäre:
Code:
find(cellfun(@(ind) any(ind==5), A))

Aber CELLFUN ist zusammen mit anonymen Funktionen oft ausgesprochen langsam, so dass meine einfache Schleife vielleicht schneller ist.

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

Forum-Century

Forum-Century


Beiträge: 102
Anmeldedatum: 19.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.04.2013, 18:54     Titel:
  Antworten mit Zitat      
Hallo ihr beiden,

vielen Dank für die schnelle Hilfe! Ihr habt mir sehr weitergeholfen!

LG
Kai
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2013, 07:00     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo jurtsche,

STRFIND funktioniert auch mit Zahlen statt mit Buchstaben. Ob das auch für Cells gilt, kann ich gerade nicht ausprobieren.

Wie wäre:
Code:
find(cellfun(@(ind) any(ind==5), A))

Aber CELLFUN ist zusammen mit anonymen Funktionen oft ausgesprochen langsam, so dass meine einfache Schleife vielleicht schneller ist.

Gruß, Jan


Hallo Jan,

stimmt, also viel kürzer geht es dann nicht mehr Wink
In diesem Fall ist die/deine Schleife ca. 8 mal schneller als cellfun mit anonymer Funktion.

LG, jurtsche
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.