我有一个matlab脚本,需要在matlab中将数据作为double(时间向量和一列)进行排序。但是,我的原始数据有两列,所以我一直在尝试创建多个matlab文件,只有时间在python中有一个数组(我对python更熟悉)
我几乎成功了,但是当我将它导入matlab时,数据以1x1结构的形式存储。所以我想要一种在python中保存matlab文件的方法,所以我可以将它作为nX2 double导入到matlab中。
继承我的代码:SIGSEGV
(我知道,这可能是以更有效的方式完成的,但我没有编程方法)
希望有人可以提供帮助。
答案 0 :(得分:0)
{'AAA': time_vec, 'SeatX':Seat['s1']}
之类的代码会创建一个python dict
。 Scipy.savemat将dict
存储为MATLAB struct
(这是MATLAB最近才知道的dict
)。此struct
应包含两个字段AAA
和SeatX
,每个字段都包含一个列向量。在MATLAB中,使用var = [Seat_X.AAA, Seat_X.SeatX];
等代码将两者结合起来很容易。
话虽这么说,使用numpy在Python中创建所需的数据结构非常容易:
import numpy as np
Seat_x = np.vstack([time_vec, Back['b1'].ravel()]).T
sc.savemat('Seat_X.mat', {'Seat_X': Seat_X})
等等。
ravel
展平Back['b1']
。如果您完全确定Back['b1']
是1D或2D"行向量",那么您可以将其关闭。
这段代码的作用是获取1D time_vec
和flattened-to-1D Back['b1']
并将其垂直堆叠为新数组中的两行。然后.T
方法将两行转换为两列。其他一切都是一样的。