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

Mehrfaches Indexing in einer Zeile

 

MATSEB
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2019, 22:05     Titel: Mehrfaches Indexing in einer Zeile
  Antworten mit Zitat      
Hallo Leute!
Ich bin seit heute neu in dem Forum und nicht ganz sicher, ob dieser Bereich der Richtige für meine Frage ist. Bittet entschuldigt, wenn dieser Beitrag verschoben werden muss.

Ich suche nicht nach einer Funktion im eigentlichen Sinne, sondern mehr nach einer Möglichkeit ein mehrfaches Indexing innerhalb einer Zeile durchzuführen.
Folgendes Beispiel soll das Problem erklären:

Man definiere folgendes Structure array:
Code:
s = struct('Feld1', {'Info1','Info2','Info3'}, 'Feld2', {'Info4','Info5','Info6'})


Nun kann man möchte man auf die Infos in den einzelnen cells zugreifen. Der Weg, den ich momentan verwende und der natürlich auch funktioniert, wäre:
Code:
feld1 = {s.Feld1} %feld1 ist somit ein 1x3 cell array
info1 = string(feld1(1)) %info1 ist somit gleich "Info1" als string


Gibt es auch eine Möglichkeit, mit der ich nicht extra jedesmal eine extra Variable deklarieren muss, welche ich für nichts anderes gebrauchen kann?
Logisch, aber falsch wäre dieser Ansatz:
Code:
info1 = string({s.Feld1}(1)} %man wählt direkt die 1. Stelle aus s.Feld1 aus und muss nichts zwischenspeichern


Natürlich läuft das später alles in einer Schleife ab und der Umfang ist deutlich größer. Das Prinzip bleibt aber das Gleiche.
Ich hoffe, dass ich die Problematik rüber bringen konnte und wir hier eine Lösung finden.

Vielen Dank!
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: 19.06.2019, 10:24     Titel: Re: Mehrfaches Indexing in einer Zeile
  Antworten mit Zitat      
Hallo MATSEB,

Herzlich willkommen im Forum!
Code:
s = struct('Feld1', {'Info1','Info2','Info3'}, 'Feld2', {'Info4','Info5','Info6'})

Das erzeugt folgendes Array:
Code:
s(1).Feld1 = 'Info1';
s(1).Feld2 = 'Info4';
s(2).Feld1 = 'Info2';
s(2).Feld2 = 'Info5';
s(3).Feld1 = 'Info3';
s(3).Feld2 = 'Info6';

Zitat:
Nun kann man möchte man auf die Infos in den einzelnen cells zugreifen.

Dieses Struct-Array enthält keine Cells mehr. Die Cells werden nur bei de Definition mit dem struct Befehl benötigt. Deshalb ist nicht ganz klar, worauf du nun zugreifen möchtest.
Du kannst auch direkt so zugreifen:
Code:
value = s(1).Feld1


Zitat:
Code:
info1 = string(feld1(1))

Zunächst war der Inhalt des Feldes ein CHAR-Vector 'Info1'. Dieser Code erzeugt aber einen String. Die Typen sind zwar ziemlich ähnlich, aber nicht gleich. Sie zu vermischen macht Code komplizierter und fehleranfälliger. Besser wäre also: char(feld1(1)) oder noch besser einfach dass Cell-Element auszulesen feld1{1} mit der Indizierung mit geschweiften Klammern.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2019, 13:53     Titel:
  Antworten mit Zitat      
Danke dir Jan! Das hat meine Frage vollständig beantwortet.

Die Problematik mit dem datatype "string" ist mir gestern auch aufgeallen.
Bei der Verwendung von mksqlite werden strings als Dateipfad nicht akzeptiert - bis ich das realisiert habe hat es sehr lange gedauert Rolling Eyes
Kopiert man einen string aus dem Workspace und fügt ihn manuell im Command Window ein, wird er nämlich als char angesehen und es funktioniert wieder Confused
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.