【发布时间】:2016-11-03 13:23:04
【问题描述】:
我有一个 matlab 脚本,它要求数据在 matlab 中排列为双精度(一个时间向量和一个多列)。但是,我的原始数据有两个多列,所以我一直在尝试创建多个 matlab 文件,只有一次在 python 中的一个数组(我更熟悉 python)
我几乎成功了,但是当我将其导入 matlab 时,数据以 1x1 结构存储。所以我想要一种在 python 中保存 matlab 文件的方法,所以我可以将它作为 nX2 double 导入到 matlab 中。
这是我的代码:import numpy as np
import scipy.io as sc
# Import matlab data
Seat = sc.loadmat('WC_Seat_Session1')
Back = sc.loadmat('WC_Back_Session1')
# Remove data from dict
Seat.pop("__globals__")
Seat.pop("__header__")
Seat.pop("__version__")
Seat.pop("ShimmerA_Timestamp_Shimmer_CAL")
Back.pop("__globals__")
Back.pop("__header__")
Back.pop("__version__")
Back.pop("id5F17_Timestamp_Shimmer_CAL")
# Create new Timestamp nessesary for next script
SF = 256
L = len(Seat['s1'])
T = L/SF
time_vec = np.arange(1/SF,T+1/SF,1/SF)
Seat_X = {'AAA': time_vec, 'SeatX':Seat['s1']}
Seat_Y = {'AAA': time_vec, 'SeatY':Seat['s2']}
Seat_Z = {'AAA': time_vec, 'SeatZ':Seat['s3']}
Back_X = {'AAA': time_vec, 'BackX':Back['b1']}
Back_Y = {'AAA': time_vec, 'BackY':Back['b2']}
Back_Z = {'AAA': time_vec, 'BackZ':Back['b3']}
# Save data as a matlab file
sc.savemat('Seat_X.mat', {'Seat_X': Seat_X }, oned_as='column')
sc.savemat('Seat_Y.mat', {'Seat_Y': Seat_Y}, oned_as='column')
sc.savemat('Seat_Z.mat', {'Seat_Z': Seat_Z}, oned_as='column')
sc.savemat('Back_X.mat', {'Back_X': Seat_X}, oned_as='column')
sc.savemat('Back_Y.mat', {'Back_Y': Seat_Y}, oned_as='column')
sc.savemat('Back_Z.mat', {'Back_Z': Seat_Z}, oned_as='column')
(我知道,这可能会以更有效的方式完成,但我没有编程经验)
希望有人能提供帮助。
【问题讨论】: