[SciPy-dev] Matlab io bug; request for advice

Matthew Brett matthew.brett at gmail.com
Thu Feb 19 12:30:36 EST 2009


Hi,

>> Therefore I am convinced that a 1d vector
>> in numpy (a row vector) corresponds more naturally to a column vector in
>> matlab. I see the argument that [1:12] in matlab is a row vector, but I
>> think this is simply to be consistent with the direct entry of matrices
>> ([1:12; 1:12] is a 2x12 matrix) and to be more economic in displaying on
>> screen. In my opinion this is not sufficient to deduce what should be
>> the default shape of a 1d vector in matlab.
>
> Also, I believe matlab is inconsistent on this point anyway -- isn't
> A(:) (basically ".ravel()") a column vector?

I agree it's not completely clear what matlab thinks.

However, at the moment we have:

In [19]: arr = np.arange(5)

In [20]: arr.shape
Out[20]: (5,)

In [21]: np.atleast_2d(arr).shape
Out[21]: (1, 5)

In [22]: scipy.io.savemat('afile.mat', {'arr':arr})

In [24]: vars = scipy.io.loadmat('afile.mat')

In [25]: vars['arr'].shape
Out[25]: (5, 1)

I think that is moderately surprising.

Best,

Matthew



More information about the SciPy-Dev mailing list