0
私の研究用にこのコードを作成しましたが、たくさんのデータファイルに使用したいのですが、手動で行う必要はありません。ファイル。希望のデータファイルの名前を入力するだけで、Pythonでinput
コマンドを使用する方法(私はWindows OS上でPython 2.7を使用します)を使用する方が高速です。これまでの私のコード:Pythonコードの入力クエリ
import iodata as io
import matplotlib.pyplot as plt
import numpy as np
import time
from scipy.signal import welch
from scipy import signal
testInstance = io.InputConverter()
start = time.time()
conversionError = io.ConversionError()
#data = testInstance.convert(r"S:\Doktorat\Python\", 1", conversionError)
data = testInstance.convert(r"/Users/PycharmProjects/Hugo/20160401", "201604010000", conversionError)
end = time.time()
print("time elapsed " + str(end - start))
if(conversionError.conversionSucces):
print("Conversion succesful")
if(conversionError.conversionSucces == False):
print("Conversion failed: " + conversionError.conversionErrorLog)
print "Done!"
# Create a new subplot for two cannals 1 & 3
a = np.amin(data.data)
Bx = data.data[0,]
By = data.data[1,]
dt = float(300)/266350
Fs = 1/dt
t = np.arange(0,300,dt*1e3)
N = len(Bx)
M = len(By)
time = np.linspace(0,300,N)
time2 = np.linspace(0,300,M)
filename = 'C:/Users/PycharmProjects/Hugo/20160401/201604010000.dat'
d = open(filename,'rb')
degree = u"\u00b0"
headersize = 64
header = d.read(headersize)
ax1 = plt.subplot(211)
ax1.set_title(header[:16] + ', ' + # station name
'Canals: '+header[32:33]+' and '+header[34:35]+ ', ' # canals
+'Temp'+header[38:43]+degree+'C' # temperature
+', '+'Time:'+header[26:32]+', '+'Date'+' '+header[16:26]) # date
plt.ylabel('Pico Tesle [pT]')
plt.xlabel('Time [ms]')
plt.grid()
plt.plot(time[51:-14], Bx[51:-14], label='Canal 1', color='r', linewidth=0.1, linestyle="-")
plt.plot(time2[1:-14], By[1:-14], label='Canal 3', color='b', linewidth=0.1, linestyle="-")
plt.legend(loc='upper right', frameon=False,)
# Create a new subplot for FFT
plt.subplot(212)
plt.title('Fast Fourier Transform')
plt.ylabel('Power [a.u.]')
plt.xlabel('Frequency Hz')
xaxis2 = np.arange(0,470,10)
plt.xticks(xaxis2)
fft1 = (Bx[51:-14])
fft2 = (By[1:-14])
plt.grid()
# Loop for FFT data
for dataset in [fft1]:
dataset = np.asarray(dataset)
freqs, psd = welch(dataset, fs=266336/300, window='hamming', nperseg=8192)
plt.semilogy(freqs, psd/dataset.size**0, color='r')
for dataset2 in [fft2]:
dataset2 = np.asarray(dataset2)
freqs2, psd2 = welch(dataset2, fs=266336/300, window='hamming', nperseg=8192)
plt.semilogy(freqs2, psd2/dataset2.size**0, color='b')
plt.show()
あなたはinput
を置く方が良いでしょうし、私は、コードを実行したときに、私が代わりに一つ一つのpythonfileを作成するのpythonになどのファイル名の名前を書くことができますいくつかの場所がある見ることができるようにコード内に指定された情報を持ちます。 Btw。 PythonをPythonに使用します。あなたがやろうとしているすべてのハードコードされたパス名を取り除くされている場合は
を見ますfilename'はハードコーディングされませんか? – Carcigenicate
@ Carcigenicate私は私の質問があまりにも具体的ではないと思う。見て、私は測定ステーションからのデータを持っています、ここでは "ヒューゴ"です。そしてそれらのステーションから、私はファイルに保存された多くの測定値を持っています。私が必要とするのは、コードを実行して、入力コマンドを入力するだけです。ファイル:Hugo、Measurement:201604010000を実行してください。 – Hiddenguy
コミュニティにようこそ。あなたの問題を解決するための答えが得られた場合は、それを受け入れるべきです。 「回答の受付方法」(https://meta.stackexchange.com/a/5235)を参照してください。 – jk622