Hallo,
Hier geht es tatsächlich nicht um ein Problem, sondern darum wie leicht
man Daten effitient per Script verarbeiten kann.
Ich möchte Messdaten effitient verarbeiten, und habe sie vom Messgerät
in der Form:
1 | #1,01-Jan-2003 01:30:45,0
|
2 | Time,Ampl
|
3 | 0,-170.969
|
4 | 3.0517578,-89.8264
|
5 | 6.1035156,-86.5723
|
6 | 9.1552734,-86.2506
|
7 | 12.207031,-85.7201
|
Diese möchte ich zunächst mal mit Exel sowie Scilab unproblematisch zur
Diagrammerstellung öffnen können.
Dazu muss in Exel 2013 unter Datei->Optionen->Erweitert der Haken
"Trennzeichen von Betriebssystem übernehmen." abgewählt werden.
Als Dezimalzeichen wähle Ich einen ".".
Somit können gewünschte Diagramme nacher korrekt dargestellt werden.
Im nächsten Schritt geht's unter
Start->Systemsteuerung->Programme->Standardprogramme->Dateityp óder
Protokoll einem Programm zuordnen.
CSV wählen, ->Programm ändern->Die Datei "Konverter.bat" wählen.
Diese enthält folgenden Inhalt:
1 | C:\1\Messungen\Scilab\Konverter.py %1
|
Der Dateipfad muss gegebenenfalls angepasst werden.
Es wird die Datei "Konverter.py" aufgerufen und ihr als
Übergabeparameter der Pfad der Gewünschten CSV-Datei übergeben.
Duch das Python-Skript wird der Dateiinhalt konvertiert sodass er
einfach in Scilab/Exel weiterverarbeitet werden kann.
Das Python-Skript enthält folgendes:
1 | import os
|
2 | import sys
|
3 | print (sys.argv)
|
4 | l1=[]
|
5 | for elem in sys.argv:
|
6 | l1.extend(elem.strip().split("\\"))
|
7 |
|
8 | leng=len(l1)
|
9 | print(l1,"\n")
|
10 | print(leng,"\n")
|
11 | with open ("Erg.csv","w") as ziel :
|
12 | with open(l1[leng-1],"r") as datei :
|
13 | print ("Inhalt :")
|
14 | z=0
|
15 | for i in datei :
|
16 | z=z+1
|
17 | zeile = i.strip()
|
18 | inhalt = zeile.split(",")
|
19 | in1=inhalt[0].split(".")
|
20 | in2=inhalt[1].split(".")
|
21 | if z>5:
|
22 | if len(in1)>1 and len(in2)>1:
|
23 | ziel.write("{0}.{1};{2}.{3}\n".format(in1[0],in1[1],in2[0],in2[1]))
|
24 | elif len(in1)>1:
|
25 | ziel.write("{0}.{1};{2}.0\n".format(in1[0],in1[1],in2[0]))
|
26 | elif len(in2)>1:
|
27 | ziel.write("{0}.0;{1}.{2}\n".format(in1[0],in2[0],in2[1]))
|
28 | else:
|
29 | ziel.write("{0};{1}\n".format(in1[0],in2[0]))
|
30 |
|
31 | os.system("C:\\1\\Messungen\\Scilab\\Auswertung.sci")")
|
Hierbei wird der übergebene Pfad zunächst getrennt, damit der Dateiname
entnommen werden kann.
In dieser Datei werden entsprechend "," durch "." ersetzt.
Es wird auch überprüft ob nicht etwa ein Eintrag keine Nachkommastelle
hat. Deshalb die if-Abfrage.
Die erzeugte Datei wird nun in Exel automatisch in zwei Spalten
geöffnet.
Die konvertierte Datei wird im Pfad der gewählten Datei als Erg.csv
gespeichert.
Abschließend wird dir Datei "Auswertung.sci" geöffnet.
Dadurch wird automatisch Scilab mit der konvertierten Datei gestartet.
Diese kann nun durch Drücken auf F5 ausgewertet werden.
--> Habt ihr eine Idee wie man sich dass sparen kann?
Darin könnte man sich z.b. das Zeitsignal eine FFT oder die
Autokorrelation der gewählten Datei ansehen...
z.b. so
1 | M=csvRead('Erg.csv',";")
|
2 | Achse = M(:,1)
|
3 | Ampl = M(:,2)
|
4 | [c,ind]=xcorr(Ampl,"biased")
|
5 | F=fft(Ampl)
|
6 | subplot(221)
|
7 | plot(Achse,Ampl)
|
8 | title ("Signal druch XI44")
|
9 | xlabel ("Zeitverlauf")
|
10 | ylabel ("Amplitude")
|
11 | legend ("Signal(t)")
|
12 | subplot(222)
|
13 | plot(ind,c)
|
14 | title ("Autokorrelation")
|
15 | xlabel ("dt")
|
16 | ylabel ("Amplitude")
|
17 | legend ("Autokorr")
|
18 | subplot(223)
|
19 | plot(F)
|
20 | title ("FFT")
|
21 | xlabel ("Frequenz")
|
22 | ylabel ("Amplitude")
|
23 | legend ("FFT")
|
Nun seht ihr das gewünschte...
Ich wäre dankbar für Anregungen und einen Tip wie die Frequenzachse der
FFT richtig skaliert wird...
oder das gewünschte einfacher erreicht werden kann...
Grüße,
Matze