Messdaten importieren



  • Hallo zusammen,

    ich hoffe dass ich als C-Neuling mit meinem Problem hier richtig bin. Ich habe ein Textdokument mit drei Spalten (Zeilen >500):

    3.2000000000000098E-002 0.98665793261931067 -0.98674582758170726
    3.4000000000000113E-002 0.98653201629686771 -0.98648933502912939
    3.6000000000000129E-002 0.98644062983697678 -0.98630065189912630
    3.8000000000000145E-002 0.98648597685217743 -0.98629450471279834

    Ich würde gerne Spalte zwei in ein Array einlesen, um damit weitere Rechnung durchführen zu können. Habe schon etwas über Pointer/Zeiger gelesen, bin damit aber noch nicht wirklich vertraut. Des Weiteren bin ich öfters auf fscanf gestoßen. Würde mich über Tipps freuen!

    Ist übrigens keine "Programmierhausaufgabe" 😉 Benötige es lediglich für eine Datenauswertung...



  • psi28 schrieb:

    Ich würde gerne Spalte zwei in ein Array einlesen, um damit weitere Rechnung durchführen zu können. Habe schon etwas über Pointer/Zeiger gelesen, bin damit aber noch nicht wirklich vertraut. Des Weiteren bin ich öfters auf fscanf gestoßen.

    Und jetzt?

    Die Namen der Mittel kennst du bereits. Den Rest solltest du dir ohne Probleme ergooglen können. Wenn du dann bei der Implementierung Probleme hast, kannst du gerne noch mal fragen kommen.



  • Sind alle Zeilen genau mit 3 Werten befüllt?
    Das würde die Sache sehr erleichtern.



  • Wenn du nur Datenauswertung machst, dann wäre es viel einfacher perl, ruby oder python zu nehmen. python hat gute Bibliotheken für Datenauswertung (scipy, numpy, pandas) und zusammen mit ipython kannst du sehr schnell Datenauswerten.

    Ich liebe C, aber für manche Aufgaben ist C einfach zu mühsam, lesen, parsen und auswerten geht definitiv viel einfacher und bequemer mit anderen Sprachen.



  • Das bezweifle ich.
    Diese Aufgabe ist mit 1 Codezeile erledigt, mit dyn. Speicher sind es 2.



  • Wutz schrieb:

    Sind alle Zeilen genau mit 3 Werten befüllt?
    Das würde die Sache sehr erleichtern.

    Ja, jede Zeile beinhaltet 3 Werte



  • int main()
    {
    	enum {MAXMW=500};
    	double d[MAXMW];
    	int i=0;
    	for(; i<MAXMW && 1==scanf("%*s%lf%*s",&d[i]); ++i);
    	return 0;
    }
    
    programm < messdaten.txt
    


  • Hallo psi28,
    du schriebst "Zeilen > 500". Man sollte bei Datenauswertung davon ausgehen, dass diese Zahl variabel ist. Du müsstest in Wutz' Programm also mindestens mal testen, ob man aufgehört hat zu lesen, weil die Datei zu Ende war oder weil i==500 war.

    Ich schließe mich hier supertux an. Gerade für so einen Kram ist Python super geeignet, ggf. auch R. Man kann Datenanalyse auch in reinem C machen, aber warum sollte man? Ohne interaktive Shell ist man bei der Aufgabe "Datenauswertung" doch völlig aufgeschmissen. Zu C würde ich erst gehen, wenn ich genau weiß, was ich genau analysieren muss und welche Schritte dafür nötig sind. Ansonsten dauert der ändern/compile/run/ausgabeChecken/neueIdeeEntwickeln-Kreislauf viel viel zu lange. Zum Beispiel würde ich mir nach Einlesen der Daten doch als erstes mal ein Histogram anschauen. Was kommt wie oft vor, was ist der Mittelwert, habe ich Ausreißer (offensichtliche Datenfehler) etc. Das geht alles praktisch out of the box mit irgendwelchen Analyseframeworks.

    Wenn du es C-artig haben willst und dich vor einem ++ nicht fürchtest, kannst du dir auch mal ROOT anschauen, da kannst du interaktiv C++ schreiben.


Log in to reply