www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Mathematica" - Variablen Namen generieren
Variablen Namen generieren < Mathematica < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Variablen Namen generieren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 21:21 Di 12.06.2012
Autor: Epsilon1973

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Ich würde gerne Namen für Variablen dynamisch definieren.

Konkret habe ich eine Liste mit Bezeichnungen:

{"ZH","BE","GR",...}

Daraus möchte ich nun folgende Verteilungen definieren:

myAgeZHDistribution =  EmpiricalDistribution[... -> ...];
myAgeBEDistribution =  EmpiricalDistribution[... -> ...];
myAgeGRDistribution =  EmpiricalDistribution[... -> ...];

Ist es möglich, dies zum Beispiel in einer For-Schleife zu tun, in welcher die Namen für die Verteilungen mit Hilfe der obigen Liste generiert werden?

Grüsse aus Zürich.




        
Bezug
Variablen Namen generieren: Antwort
Status: (Antwort) fertig Status 
Datum: 08:58 Mi 13.06.2012
Autor: danm357

Hallo,

Du könntest folgendes machen:

Definiere eine Liste mit Deinen Länderkürzeln:

countriesList = {"ZH", "BE", "GR", "USA"};

Deine Namensliste bekommst Du dann einfach mit:

namesList =
Table["myAge" <> countriesList[ [ i ] ]<> "Distribution", {i, 1, Length[countriesList]}]

Weiterarbeiten kannst Du dann mit etwas ähnlichen wie:

Table[namesList[ [i] ] =
   EmpiricalDistribution[listenName1[ [i] ] -> ...];, {i, 1,
  Length[countriesList]}]

Wobei Du hoffentlich erkennst, dass Du diesen Pseudo-Code etwas auf Deine Bedürfnisse anpassen musst.
P.S. Die eckingen Doppelklammern gehören direkt hintereinanden geschrieben, aber das bekomme ich hier einfach nicht hin...

Bezug
                
Bezug
Variablen Namen generieren: Rückfrage
Status: (Frage) überfällig Status 
Datum: 13:33 Mi 13.06.2012
Autor: Epsilon1973

Hallo danm357

Besten Dank für die Antwort. Leider werde ich daraus nicht ganz schlau ;) Entweder verstehe ich Deinen Code nicht, oder er macht nicht das, was ich mir wünsche.

Das generieren der namesList in Deinem ersten Table-Befehl ist natürlich kein Problem. Ich möchte dann aber verschiedene Verteilungen generieren, die diese Namen erhalten. Dein zweiter Table-Befehl scheint mir, die Verteilungen einfach in der namesList abzulegen.

Ich möchte gerne, dass meine Verteilungen schlussendlich die Namen aus der namesList haben, damit ich die wie folgt verwenden kann:

z.B.:
Mean[myAgeZHDistribution]
StandardDeviation[myAgeCHDistribution]
Probability[x >= 65, x [mm] \[Distributed] [/mm] myAgeGRDistribution] usw.

Oder auch davon losgelöst: wie kann ich einer Variablen einen Wert zuweisen, wenn der Name der Variable aus einem String geholt werden soll .

Grüsse. Epsilon


Bezug
                        
Bezug
Variablen Namen generieren: Fälligkeit abgelaufen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:20 Fr 15.06.2012
Autor: matux

$MATUXTEXT(ueberfaellige_frage)
Bezug
                        
Bezug
Variablen Namen generieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:13 So 24.06.2012
Autor: Peter_Pein

Hallo,

da ich tippfaul bin, nehme ich zur Veranschaulichung Variablen mit zwei Zeichen:
1: zuweisung[name_String, index_Integer, wert_] :=
2:   Set[Evaluate[ToExpression[name <> ToString[index]]], wert]

Dann werden die Variablen x1, x2,x3,y1, ..., z3 durch
1: Module[{w = 123},
2:   Outer[zuweisung[#1, #2, w++] &, {"x", "y", "z"}, {1, 2, 3}]
3:   ];

mit verschiedenen Werten belegt, die beispielsweise per
1: {#, ToExpression@#}& /@ 
2:   Flatten[Outer[StringJoin, ##]& @@
3:     Map[ToString, {{x, y, z}, {1, 2, 3}}, {2}]
4:   ]

ermittelt werden können.

Gruß,
  Peter

Bezug
                                
Bezug
Variablen Namen generieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 09:27 Mi 27.06.2012
Autor: Epsilon1973

Herzlichen Dank Peter für die Ausführungen.

Habe Deine Antwort erst jetzt gesehen, da ich schon von danm357 eine hilfreiche Antwort bekommen habe und deshalb eine Weile nicht mehr reingeschaut habe, sorry.

Deine Antwort  erfasst genau mein Anliegen und hat auch noch neue Aspekte drin im Vergleich mit der Antwort von danm357. Auf jeden Fall ist "Evaluate" in Kombination mit "Symbol" bzw "ToExpression" das Zauberwort, das ich gesucht habe.

Nochmals danke & Grüsse aus Zürich.

Bezug
        
Bezug
Variablen Namen generieren: Antwort
Status: (Antwort) fertig Status 
Datum: 16:32 Mi 13.06.2012
Autor: danm357

Sali Epsilon,

Danke für das Feedback. Schön zu hören, dass das Generieren der namesList klar zu sein scheint.
Den zweiten Teil Deiner Frage kann ich momentan nicht viel besser beantworten, da ich Deine Daten nicht kenne.

Falls Deine Daten in einem array sind, könntest Du vielleicht folgendes machen:
Table[namesList[ [i] ] = data[ [i] ], {i, 1, Length[countriesList]}]

Damit hat nun jedes Element aus Deiner namesList seinen eigenen Datensatz erhalten.
Dies setzt natürlich voraus, dass Du Deine Daten so geordnet hast, dass data[ [1] ] zu „ZH“ und data[ [2] ] zu „Be“ gehört etc. (und die namesList diese Reihenfolge übernimmt).

Nun könntest Du problemlos Mean[myAgeZHDistribution] etc. berechnen.

Wenn das Deine Frage nicht beantwortet, könnte ich Dir vielleicht weiterhelfen, wenn Du mir mitteilst, woher Deine Daten kommen, welche Form sie haben etc.

Cu!

Bezug
                
Bezug
Variablen Namen generieren: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 16:54 Mi 13.06.2012
Autor: Epsilon1973

Die originalen Daten importiere ich direkt aus Excel-Dateien, wobei  das nichts mit meinem Problem zu tun hat.

Deshalb hier ein kleines Beispiel:

Die Verteilung definiere ich mal wie folgt:

myDistribution = EmpiricalDistribution[{0.2, 0.8} -> {0, 1}];

Nun möchte ich die gleiche Verteilung unter dem neuen Namen myNewDistribution ablegen wobei dieser Name aus einem String geholt werden soll, so in der Art:

distributionName = "myNewDistribution";
... =  EmpiricalDistribution[{0.2, 0.8} -> {0, 1}];

So weit ich sehe, löst Dein Vorschlag das Problem nicht. Oder sonst verstehe ich da was falsch?

Grüsse. Epsilon

Bezug
                        
Bezug
Variablen Namen generieren: Antwort
Status: (Antwort) fertig Status 
Datum: 17:58 Mi 13.06.2012
Autor: danm357

Hoi Epsilon,

doch, ich finde schon, dass die Art der Daten etwas mit der Problemlösung zu tun hat.

Hast Du für ZH BE etc. ein jeweiliges Datenset (dataSet1, etc.) dann kannst Du folgendes machen:
data = {{"ZH", "BE", "GR", "USA"}, {{dataSet1}, {dataSet2}, {dataSet3}, {dataSet4}}};

MapThread[(Clear[#1]; Evaluate[Symbol[#1]] = #2) &, data];

Gibst Du nun ZH ein, erhältst Du als Output dataSet1 (also all die Zahlen etc., die sich darin befinden).
Auf dieses dataSet1 kannst Du nun Mean etc. anwenden.

Ich hoffe, das hilft Dir etwas weiter!


Bezug
                                
Bezug
Variablen Namen generieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:45 Mi 13.06.2012
Autor: Epsilon1973

Hey danm357

Herzlichen Dank, das hat geholfen *freu*. Die Kombination von Evaluate[Symbol[String]]=... ist exakt das, was ich gesucht habe. Funktioniert jetzt absolut perfekt:

distributionName = "myDistribution";
Evaluate[Symbol[distributionName]] = EmpiricalDistribution[{0.2, 0.8} -> {0, 1}];
Mean[myDistribution]

Werde noch ein bisschen nachlesen, was Evaluate und Symbol genau bewirken, damit ich die Funktionsweise genau verstehe.

Nochmals vielen vielen Dank.

Grüsse. Epsilon

Bezug
                                        
Bezug
Variablen Namen generieren: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:15 Mi 13.06.2012
Autor: danm357

Vielen Dank für das Feedback!
Freut mich sehr zu hören, dass Du nun weiterkommst.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Mathematica"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.mathebank.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]