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

struct mit cell arrays erstellen

 

chris12456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2015, 20:46     Titel: struct mit cell arrays erstellen
  Antworten mit Zitat      
Code:
for i=1:numel(all)
    if strfind(all{i,1}, '-AB') == 1        
        all.AB = [all.AB, all{i,1}]
    end
end


Hallo,

ich habe einen Zellarray mit etwa 100 Einträgen. Die Einträge haben verschiedene Endungen wie z.B. '-AB'! Diese will ich jetzt filtern und einen Struct erstellen worunter die sortierten Endungen zu finden sind!

[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.03.2015, 22:07     Titel: Re: struct mit cell arrays erstellen
  Antworten mit Zitat      
Hallo chris12456,

"all" ist ein wichtiger Matlab-Befehl. Diesen Namen für eine Variable zu verwenden, kann zu unerwarteten Ergebnissen führen.

Zitat:
ich habe einen Zellarray mit etwa 100 Einträgen. Die Einträge haben verschiedene Endungen wie z.B. '-AB'!

Ein Beispiel wäre hilfreich. Die Elemente von "all" sind also Strings, von denen einige mit '-AB' aufhören, oder?

Zitat:
Diese will ich jetzt filtern und einen Struct erstellen worunter die sortierten Endungen zu finden sind!

Das ist nicht klar. Macht der gepostete Code, was Du willst? Was genau ist Deine Frage?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
chris12456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2015, 22:30     Titel:
  Antworten mit Zitat      
Nein, der Code macht leider nicht was ich will!

Also ich habe eine Liste aus Access ausgelesen. Das hat alles geklappt. Und nun hab ich eine 98x1cell Variable, in der 98 Strings gespeichert sind. Manche enden jetzt z.B. auf -AB und ander auf -AC. Diese will ich nun so sortieren, dass ich unter einem struct 'Liste' die einzelnen cell Arrays habe in denen dann nur die Strings enthalten sind, die die Endung haben.

also den struct Liste --> cellarray -AB --> darin alle Strings die mit -AB enden
 
chris12456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2015, 22:50     Titel:
  Antworten mit Zitat      
Ich habe glaube soeben meinen Fehler gefunden. strfind gibt ja als Wert den Platz des gesuchten Strings zurück. Und mit der Abfrage ob die ==1 ist, komme ich ja nicht weiter. Ich will nur wissen ob sie Überhaupt enthalten sind.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.03.2015, 10:43     Titel: Re: struct mit cell arrays erstellen
  Antworten mit Zitat      
Hallo chris12456,

Es gibt noch ein Problem: einmal ist "all" ein Cell String, und in "all.AB" ist es ein Struct.
Ich nenne den Cell String jetzt mal "ListCell" und das Struct "List".
Code:
Found = ~cellfun('isempty', strfind(ListCell, '-AB'));
List.AB = ListCell(Found);

Einfacher wäre es mit: http://www.mathworks.com/matlabcent.....leexchange/27032-strncmpr
Code:
List.AB = ListCell(strncmpr(ListCell, '-AB', 3));


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
chris12456

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2015, 12:40     Titel:
  Antworten mit Zitat      
Hey,


also das mit der Endung vergleichen hat bei mir nicht funktioniert. Matlab erkennt die Function nicht. Aber habe es auf jeden Fall richtig geschrieben. Mehrmals verglichen. Dennoch ist die erste Lösung um einiges eleganter als meine Lösung. Vielen Dank!!

Gruß Chris
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.03.2015, 16:01     Titel:
  Antworten mit Zitat      
Hallo chris12456,

Zitat:
also das mit der Endung vergleichen hat bei mir nicht funktioniert.

Hast Du die Funktion wie in der Anleitung beschrieben installiert, z.B. auf kompiliert und vorher den Compiler mit "mex -setup" aktiviert? Das Installieren von C-Mex-Funktionen ist nicht trivial, es lohnt sich hier wohl nur, wenn dieser Code-Abschnitt zeitkritisch ist.

Gruß, Jan
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 - 2024 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.