Tabelle und For-Schleife < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) reagiert/warte auf Reaktion | Datum: | 14:49 Di 10.06.2008 | Autor: | danm357 |
Ich habe folgende Frage in keinem anderen Forum gestellt.
Hallo liebe Forengemeinde,
ich lasse mir mit Mathematica Werte durch eine For-Schleife berechnen, also z.B.:
For[j=1,j<=5,j++ [mm] ,Print[j];Print[j^2];Print[j^3]]
[/mm]
Nun möchte ich aber, dass mir Mathematica meine berechneten Werte in eine Tabelle/Matrix schreibt, also in Form von
1 1 1
2 4 8
3 9 27
etc. und dann als txt-File abspeichert. Das mit dem Abspeichern als txt-File bekomme ich durch den Export-Befehl wohl hin. Aber leider schaffe ich es überhaupt nicht, meine Werte zu tabellieren. Ich habe es schon mit Array, Table, List- Befehlen probiert, aber immer ohne Erfolg. Vielleicht weiss ja jemand von Euch, wie ich es machen muss. Für einen kleinen Tipp, wäre ich sehr dankbar.
|
|
|
|
Hallo,
zuerst wollen wir diue komplette Tabelle erstellen:
t = Table[{j, j^2, j^3}, {j, 1, 5}]
Nun können wir die Ergebnisse in Tabellenform anzeigen lassen:
t // TableForm
oder auch exportieren:
Export[t, <mein Dateiname>, <Format>]
Für "Format" kannst du ja mal die Formate aus der Hilfe zu Export durchprobieren, wobei für dich wohl "Table" oder "CSV" zutreffen.
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 08:25 Mi 11.06.2008 | Autor: | danm357 |
Hallo,
erstmal vielen Dank für Deinen Lösungsvorschlag! Leider versuche ich immer mein Problem etwas vereinfacht darzustellen, damit die Bearbeitung nicht so kompliziert wird. Doch nun habe ich das Problem so sehr vereinfacht, dass die Lösung einfach ist, aber leider nicht für das ursprüngliche Problem funktioniert.
Ich erklär Dir nun mein eigentliches Problem, in der Hoffnung, dass Du oder jemand anderes gewillt ist, mir einen Tipp zu liefern:
Zuerst importiere ich Daten aus einer Tabelle mit
Siehe Anhang, (*Daten importieren*) Datei-Anhang
Dann bearbeite ich die Tabelle. Ich möchte mir z.B. bloss den Mittelwert der positiven Werte ausgeben lassen (ich mache auch noch andere Dinge, die ich jetzt hier weglasse) und zwar für jede einzelne Spalte (z.B. von Spalte 1 bis 10). Dies mache ich mit
Siehe Anhang, (*Positive Werte mitteln*)
Nun möchte ich, dass mir Mathematica die Mittelwerte in eine neue Tabelle schreibt. Dazu habe ich einige Variationen von Deinem Vorschlag probiert, wie im Anhang, (*Versuch Tabelle mit Mittelwerten zu generieren*) zu sehen ist. Aber leider ohne Erfolg. Es wird immer nur der Mittelwerte der letzten Spalte in die neue Tabelle geschrieben. Vielleicht kannst Du oder jemand anderes mir ja jetzt noch mal weiterhelfen mit einem Tipp. Damit die Bearbeitung etwas einfacher fällt habe ich mal einen Ausschnitt meiner Tabelle mit angehängt. Datei-Anhang
Über eine weitere Antwort würde ich mich echt freuen!
Dateianhänge: Anhang Nr. 1 (Typ: nb) [nicht öffentlich] Anhang Nr. 2 (Typ: txt) [nicht öffentlich]
|
|
|
|
|
Hallo,
dann wollen wir mal Abhilfe schaffen...
Du überschreibst in jedem Schleifendurchlauf dein letztes Ergebnis, also kein Wunder, dass es nicht funkioniert. Aber wir können die gesamte Tabellenberechnung mal abkürzen. Nach dem Importieren der Daten führen wir eine der beiden folgenden Alternativen aus:
t = Table[Mean[Select[Daten[[All, j]], NonNegative[#] &]], {j, 1, 7}]
oder
t = Map[Mean @ Select[#, NonNegative[#] &] &, Transpose[ Daten[[All, Range[7]]]]]
Vielleicht kannst du dir die Funktionsweise der Übung halber durch einen Blick in die Hilfe klarmachen.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 07:49 Fr 13.06.2008 | Autor: | danm357 |
Hallo,
vielen Dank für Deine Hilfe. Das erspart mir jetzt sehr viele Mühen.
Den Tipp mit der Hilfe habe ich natürlich vorher schon beherzigt, aber manchmal weiss man bei der Vielzahl an Möglichkeiten bei Mathematica nicht, wonach man suchen soll. Da ist dann so eine Hilfe wie von Dir viel effektiver.
Nochmals Danke und ein schönes Wochenende
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:44 Fr 13.06.2008 | Autor: | Martin243 |
Hallo,
das mit der Hilfe war kein Vorwurf an dich sondern eine Entschuldigung meinerseits, weil ich die Konstrukte nicht weiter erklärt habe.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:53 Mo 16.06.2008 | Autor: | danm357 |
Hallo Martin,
Dein Kommentar mit der Hilfe habe ich auch nicht wirklich als Vorwurf aufgefasst. Ich bin jedenfalls froh, dass Du mir so schnell helfen konntest.
Noch eine schöne Woche
Dan
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 02:33 Fr 20.06.2008 | Autor: | Peter_Pein |
Hallo Martin,
bitte, bitte nicht hauen; es ist nicht als Korinthenkackerei gemeint:
Wenn man - wie vermutlich die meisten von uns - ein deutsches Tastaturlayout hat, kann es signifikante Einsparungen an Tipparbeit und Nervensubstanz geben, wenn man anonyme Funktionen, wie NonNegative[#]& einfach durch den Funktionsnamen (in diesem Fall: NonNegative) ersetzt. Dies erspart wiederholtes "AltGr-8"/AltGr-9" Getippse.
P.S.: Natürgriff funzt das nicht bei geringfügig komplizierteren Funktionen wie #>=0 && Element[#,Integers]& etc.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:19 Fr 20.06.2008 | Autor: | Martin243 |
Hallo,
von mir wird hier niemand gehauen. Denn ich habe (beim Vereinfachen) wirklich übersehen, dass es unnötig kompliziert ist. Allerdings muss man schon zugeben, dass das deutsche Layout zum Programmieren nicht das beste ist. Und schließlich: Nur die Harten kommen in den Garten...
Gruß
Martin
|
|
|
|