|
|
Durchnummerierte Variablennamen |
|
neuer Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.12.2007, 10:29
Titel: Durchnummerierte Variablennamen
|
|
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: ---
|
|
|
|
|
|
Verfasst am: 02.12.2007, 12:09
Titel:
|
|
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
|
|
Beiträge: 140
|
|
|
|
Anmeldedatum: 03.11.07
|
|
|
|
Wohnort: Stuttgart
|
|
|
|
Version: 2011b+aktuellstes Release
|
|
|
|
|
|
Verfasst am: 02.12.2007, 12:39
Titel:
|
|
Ich frage mich aber trotzdem warum man sowas machen will. Arrays sind doch viel geschickter?
|
|
|
neuer Gast |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.12.2007, 13:14
Titel:
|
|
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
|
|
Beiträge: 260
|
|
|
|
Anmeldedatum: 19.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: immer alles
|
|
|
|
|
|
Verfasst am: 03.12.2007, 14:51
Titel:
|
|
|
|
|
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|