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

Structure mit Schleife erzeugen

 

Rechenesel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2009, 08:41     Titel: Structure mit Schleife erzeugen
  Antworten mit Zitat      
Hallo Matlab-Freunde,

ich hab hier ein keines Problem..

habe mittels xlsread rel. viele Proben-Daten eingelesen.. und jetzt im Workspace ne Menge Cell/Double-Arrays in deinen die jeweiligen Parameter getrennt abgelegt sind, soll heißen:

erstes Array enthält bspw. die Jahreszahlen sämtlicher Proben, und heißt X
zweites Array enthält die Monate - Y
drittes Array die Länder - Z usw.

diese würd ich nun folgendermaßen in ein Struct "schieben":

Probe(1)=struct('X', X(1), 'Y', Y(1), 'Z', Z (1) usw);
Probe(2)=struct('X', X(2), 'Y', Y(2), 'Z', Z (2) usw);
Probe(3)=struct('X', X(3), 'Y', Y(3), 'Z', Z (3) usw);

nun sinds aber mehrere Hundert Proben und die möcht ich logischerweise nicht einzeln mit nem Befehl ansprechen...

Möchte nun quasi folgendes Machen:

for i = 1 to 550

Probe(i)=struct('X', X(i), 'Y', Y(i), 'Z', Z (i) usw);

end

hab noch nicht wirklich viel Ahnung von Matlab - wieso funktioniert das nicht so - bzw.. wie macht man sowas?

Vielen Dank schonmal euch allen!


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.05.2009, 10:58     Titel:
  Antworten mit Zitat      
Hallo,

im Prinzip geht es so. Wenn ich es richtig sehe: sind X,Y,Z cell arrays? In dem Fall solltest Du auch {} verwenden, d.h.
Code:
P(i) = struct('X', X{i}, 'Y', Y{i}, 'Z', Z{i});
 

Wenn es aber wirklich cell-arrays sind, sollte es auch ohne Schleife gehen:
Code:
P = struct('X', X, 'Y', Y, 'Z', Z);
 


Ciao,
Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Rechenesel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2009, 13:51     Titel:
  Antworten mit Zitat      
Die meisten Daten sind Zahlen also in Double Arrays abgelegt, einige wenige sind Cell Arrays.

Hab beides Probiert, bei ersterem bekomm ich dann ne Fehlermeldung und beim zweiten weg behandelt er die Double Array nicht richtig - soll heißen er gibt bei aufruf eines Wertes einer Probe immer die Werte aller Proben aus.
 
Rechenesel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2009, 08:01     Titel:
  Antworten mit Zitat      
Einlesen und ausgeben funktioniert nun eingentlich wunderbar, wie kann ich nun aber beispielsweise alle Proben aus der Stuktur ausgeben lassen bei denen Probe.Country ein gewisses Land ist?
 
Rechenesel

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.05.2009, 09:36     Titel:
  Antworten mit Zitat      
Habs jetzt mit:

Code:
a=strcmp(Country, 'Land');
b=find(a);
c={Probe(b).Sample_Number};


gelöst, geht das noch eleganter oder ist das so in Ordnung?
 
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.