CSV として出力したい MAT ファイルがいくつかあります。あきらめた場合は、.txt として保存できますが、CSV でこれを行う方法を知りたいです。
私の問題は、チャネルごとにタイムスタンプが異なることです。0.5hz 程度の低いチャンネルもあれば、約 10hz のチャンネルもあると思います。しかし、それらは正確に並んでいないようです。誰かがゼロ次ホールドを提案しましたが (それを実行する方法がわかりません)、このデータを「純粋な」ものとしてリリースしているので、タイムスタンプを調整したくありません。
channels = []
for key in matfile.keys():
if key.startswith('CAN'):
channels.append(str(key) + '_time')
channels.append(key)
output = {}
for channel in channels:
if channel.endswith('_time'):
channel_time = channel[0:-5]
output[channel] = matfile[channel_time].item()[6]
else:
output[channel] = matfile[channel].item()[7].item()[0]
with open(path_plus_title, 'wb') as outfile:
writer = csv.writer(outfile)
writer.writerow(channels)
writer.writerows(zip(*(output[k] for k in channels)))
これにより、チャンネルのタイムスタンプの後にチャンネルが続く順序で、必要なチャンネルのみが得られます...しかし、データの最短列の終わりに達すると、書き込みが停止します。
短い列をスペースやゼロなどで埋めて、データをまっすぐに保ち、それがデータの終わりであることを明確にしたいと思います。私が見逃した列単位の方法はありますか?