Suchen und filtern von Elementen in einem MATLAB-cell-Arrays
Habe ich eine Liste (cell array) von Elementen mit Strukturen wie diese:
mystruct = struct('x', 'foo', 'y', 'bar', 's', struct('text', 'Pickabo'));
mylist = {mystruct <more similar struct elements here>};
Nun würde ich gerne filter mylist für alle Strukturen, aus denen s.text == 'Pickaboo' oder eine andere vordefinierte Zeichenfolge. Was ist der beste Weg, dies zu erreichen in MATLAB? Das ist natürlich einfach für arrays, aber was ist der beste Weg, dies zu tun für Zellen?
InformationsquelleAutor smichak | 2010-08-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie CELLFUN für diese.
Jedoch, warum machst du eine Zelle von structs? Wenn Sie Ihre Strukturen haben alle die gleichen Felder, die Sie machen können ein array von structs. Man das trifft, Sie würden dann verwenden ARRAYFUN.
Wenn alle Ihre Strukturen in der Zelle Arrays haben die gleichen Felder (
'x'
,'y'
, und's'
), dann kannst du speichernmylist
als Struktur-array statt einem cell-array. Sie können konvertierenmylist
etwa so:Nun, wenn alle Ihre Felder
's'
enthalten auch Strukturen mit denselben Feldern in Ihnen, die Sie sammeln, können Sie alle zusammen in der gleichen Weise, dann überprüfen Sie Ihre Feld'text'
mit STRCMP:Hier
isMatch
wird ein logischer index-Vektor die gleiche Länge wiemylist
mit diejenigen, bei denen eine übereinstimmung gefunden wird, und Nullen sonst.Verwenden
cellfun
.