在python中创建并保存为matlab-double

时间:2016-11-03 13:23:05

标签: python matlab

我有一个matlab脚本,需要在matlab中将数据作为double(时间向量和一列)进行排序。但是,我的原始数据有两列,所以我一直在尝试创建多个matlab文件,只有时间在python中有一个数组(我对python更熟悉)

我几乎成功了,但是当我将它导入matlab时,数据以1x1结构的形式存储。所以我想要一种在python中保存matlab文件的方法,所以我可以将它作为nX2 double导入到matlab中。

继承我的代码:
SIGSEGV

(我知道,这可能是以更有效的方式完成的,但我没有编程方法)

希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

{'AAA': time_vec, 'SeatX':Seat['s1']}之类的代码会创建一个python dict。 Scipy.savemat将dict存储为MATLAB struct(这是MATLAB最近才知道的dict)。此struct应包含两个字段AAASeatX,每个字段都包含一个列向量。在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方法将两行转换为两列。其他一切都是一样的。