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

Zugriff auf Elemente in Cell-String-Matrix per Indizes

 

sdoubleu
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2015, 11:05     Titel: Zugriff auf Elemente in Cell-String-Matrix per Indizes
  Antworten mit Zitat      
Ich habe eine Cell-Matrix mit n x 3 Elementen, bestehend aus unterschiedlich langen Strings.
Ich möchte bei allen Strings der 3. Spalte überprüfen, ob das erste Element ein großer Buchstabe ist.

Ich wollte dafür die folgende Funktion nutzen:
Code:


Wie kann ich aber per Indizes aus meiner String-Cell-Matrix nur auf das erste Element aller Strings der 3. Spalte zugreifen?
Nach diesem (nicht funktionierenden) Bsp.:
Code:
idx = isstrprop(A{:,3}(1), 'upper');
% -> "Bad cell reference operation."
 


Es funktioniert wenn ich einen definierten Index aufrufe:
Code:
idx = isstrprop(A{4,3}(1), 'upper');

Aber nicht wenn ich es für alle in einer Spalte möchte.

Gibt es eine Möglichkeit ohne Schleife?

Testmatrix:

Code:
A = {'eins', 'eins', 'eins', 'eins', 'eins'; 'zwo', 'zwo', 'zwo', 'zwo', 'zwo'; 'Drei', 'Eins', 'Sieben', 'elf', 'Eins'}'


Sicher wurde das Problem mit den Indizies schon behandelt konnte es aber nicht finden. Man kann also auch auf ein anderen Beitrag verweisen.

Danke!

Zuletzt bearbeitet von sdoubleu am 23.07.2015, 12:30, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2015, 11:16     Titel:
  Antworten mit Zitat      
Hallo,

wenn die folgenden Buchstaben immer Kleinbuchstaben sind, ginge folgendes:
Code:
~strcmp(A(:,3), lower(A(:,3)))


Ansonsten würde ich höchstens die Möglichkeit sehen, mit cellfun zu arbeiten.

Falls das performance-kritisch ist, müsste man wohl wirklich verschiedene Ansätze vergleichen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
sdoubleu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2015, 11:33     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deinen Vorschlag.
Leider sind die darauf folgenden Buchstaben nicht immer nur klein.
Ich passe mal die Testmatrix an:
Code:
A = {'eins', 'eins', 'eins', 'eins', 'eins'; 'zwo', 'zwo', 'zwo', 'zwo', 'zwo'; 'Drei', 'EinS', 'SieBen', 'elf', 'EinS'}'


Performance wäre nicht schlecht, da die ursprüngliche Matrix nicht so klein ist und zudem der Befehl mehrmals in meinem Skript ausgeführt werden soll.

Weiter Vorschläge?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2015, 11:38     Titel:
  Antworten mit Zitat      
Hallo,

wie wäre es damit?

Code:
col3 = char(A(:,3));
isstrprop(col3(:,1), 'upper')


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
sdoubleu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2015, 12:02     Titel:
  Antworten mit Zitat      
Hallo Harald,

Danke für deine Antwort.
Damit kann ich arbeiten.

Was ich aber nicht verstehe, warum das mit bestimmten Indizies {4,3}(1) funktioniert und mit unbestimmten {:,3}(1) nicht funtioniert.
Könnte mir das einer erklären?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.07.2015, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

die erste Indizierung holt ein Element aus dem Cell Array heraus.
Die zweite Indizierung holt viele Elemente heraus und gibt eine Liste dieser Elemente zurück.
Code:

In diese Liste kann man so aber nicht indizieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
sdoubleu
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.07.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2015, 15:49     Titel:
  Antworten mit Zitat      
Danke für die Erklärung.
Dann blieb mir ja von Anfang an keine andere Wahl, als über einen Hilfsvektor zu gehen. Und ich dachte ich bin zu bl.d für die Indizierung.

Ich verstehe einfach zu wenig von dem was im Hintergrund in Matlab passiert, um zu verstehen, weshalb man nicht auch die "Liste", wie du es nanntest nicht indizieren kann.
Code:

Nun gut ... ich habe eine Lösung mit der ich arbeiten kann und das ganze ohne Schleife.
Nochmals Danke Harald!
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.