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

Durchnummerierte Variablennamen

 

neuer Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2007, 10:29     Titel: Durchnummerierte Variablennamen
  Antworten mit Zitat      
Hallo,

ich bin recht neu mit Matlab unterwegs und hab jetzt folgendes Problem: Ich habe eine 3D Matrix mit Daten (z. B. 10000 Zeilen, 10 Spalten, nach hinten 50 "Scheiben"). Nun möchte ich immer eine "Scheibe" heraustrennen und diese einem durchnummerierten Variablennamen zuweisen, z.B.

data(1:10000,1:10,1:50)=ones; %hier wären natürlich die richtigen Daten drin
Proband01=data(:,:,1);
Proband02=data(:,:,2);

usw.

das sollte ja eigentlich automatisiert gehen. Doch wie bringe ich eine durchlaufende Zahl in einen Variablennamen? Also mit welchem Code erzeuge ich die Proband01 bis Proband50 in einer Schleife?

Danke für Eure Hilfe!


neuer Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2007, 12:09     Titel:
  Antworten mit Zitat      
Hallo,

noch eine Ergänzung: ich habe gerade die Antwort auf einen ähnlich gelagerten anderen Beitrag gesehen:

for i=1:5
eval(sprintf('x%d=rand(1)',i))
end

Nur gibt es da noch eine Schwierigkeit, die ich vorhin noch nicht vermutete: Die Durchnummerierung soll in die mitte des Variablennamens, z.B. Proband01_Bedingung. Den 2. Teil des Variablennamens konnte ich nicht anhängen. Hat jemand eine Idee?

Danke!
 
Tim
Forum-Century

Forum-Century



Beiträge: 140
Anmeldedatum: 03.11.07
Wohnort: Stuttgart
Version: 2011b+aktuellstes Release
     Beitrag Verfasst am: 02.12.2007, 12:39     Titel:
  Antworten mit Zitat      
Code:
eval ( sprintf( 'Proband%02d_Bedingung = rand(1)', i ) )


Ich frage mich aber trotzdem warum man sowas machen will. Arrays sind doch viel geschickter?
Private Nachricht senden Benutzer-Profile anzeigen
 
neuer Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2007, 13:14     Titel:
  Antworten mit Zitat      
Hallo Tim,

danke, das hat geklappt.

Zu Deiner Frage: es ist ein Zwischenschritt bei der Zusammenführung mehrerer Daten zu jeweils einem Probanden. Damit das Einlesen so klappt wie bisher mit anderen Datensätzen auch, möchte ich mich an diese Struktur anpassen.

Mir ist nicht so ganz klar, was Du mit Arrays meinst, nach meinem Anfängerverständnis sind Arrays eine Art Datentabellen, die alles mögliche in ihren Zellen enthalten können - aber wie soll mir das da weiterhelfen? Bin wie gesagt noch recht neu in Matlab und habe insb. keine Programmiererfahrung.
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 03.12.2007, 14:51     Titel:
  Antworten mit Zitat      
neuer Gast hat Folgendes geschrieben:
<snip>
Mir ist nicht so ganz klar, was Du mit Arrays meinst, nach meinem Anfängerverständnis sind Arrays eine Art Datentabellen, die alles mögliche in ihren Zellen enthalten können - aber wie soll mir das da weiterhelfen? Bin wie gesagt noch recht neu in Matlab und habe insb. keine Programmiererfahrung.


Na ja, Du kannst Dir dieses sehr umständliche Variablen-Benennen komplett sparen, wenn Du von vornherein mit cell arrays arbeitest.

Beispiel:

Deine Variante:
Proband01=data(:,:,1);
Proband02=data(:,:,2);
...

Mit cell arrays:
Proband{1}=data(:,:,1);
Proband{2}=data(:,:,2);
...

Damit kannst Du viel leichter arbeiten. Nicht nur die Zuordnung z.B. in Schleifen geht einfacher, sondern vor allem die Datenübergabe an andere Programme bzw. Funktionen. Wie übergibst Du in Deiner Variante eigentlich die Daten von z.B. 10 ausgewählten Patienten an eine andere Funktion, z.B. eine Grafikausgabe? Mit cell arrays kein Problem: Man übergibt einfach das gesamte array (also "Proband") sowie die Indizes der entsprechenden Elemente als normales array an die Unterfunktion. Fertig.

Aber keine Bange: Diese Phase, die Du gerade "durchmachst", hatte jeder Matlab-Programmierer früher oder später mal. Das legt sich wieder von alleine.

Hoffe, das hilft,

Gruß tompie
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.