В сеансе numy:
In [25]: from scipy.io import savemat
In [26]: savemat('test.mat', {'x':np.ones((3,),int), 'y': np.ones((3,1),int), 'z
...: ': np.ones((1,3),int)})
В октавном сеансе после load
:
>> size(x),size(y),size(z)
ans =
1 3
ans =
3 1
ans =
1 3
Это массив 1d, который состоит из (1, n) матрицы:
x =
1 1 1
С 2d массивами смотрите order
. MATLAB использует F
. Так
In [31]: np.arange(12).reshape(3,4,order='F')
Out[31]:
array([[ 0, 3, 6, 9],
[ 1, 4, 7, 10],
[ 2, 5, 8, 11]])
сохраняет как
>> w
w =
0 3 6 9
1 4 7 10
2 5 8 11
Из-за внутренних различий в порядках массивов / матриц передача значений от одного к другому может привести к путанице. Действия savemat/loadmat
не обязательно помогают.
Глядя на документы, есть также параметр oned_as
, который определяет, будут ли массивы (n,)
сохранены как (n, 1) или (1, n).