[SciPy-user] loadmat behaviour

Nils Wagner nwagner at iam.uni-stuttgart.de
Wed Oct 18 02:42:08 EDT 2006


Carlos Medrano wrote:
> Matthew Brett <matthew.brett <at> gmail.com> writes:
>
>   
>> Hi,
>>
>>     
>>> When I try to use io.loadmat it reads numbers as unsigned integers
>>>
>>>       
>>>>>> ret=io.loadmat('datafile.mat')
>>>>>> ret['L1']
>>>>>>             
>>> array([        10, 4294966944,      97346], dtype=uint32)
>>>
>>>
>>> How can I do to read the original data type?
>>>       
>> This is because matlab saves the data in that format.  You could try
>> this hardly documented feature:
>>
>> import scipy.io as sio
>> MR = sio.MatFile5Reader(open('datafile.mat'), matlab_compatible=True)
>> ret = MR.get_variables()
>>
>> Best,
>>
>> Matthew
>>
>>     
>
> Hi
>
> If I try your code I get the following error:
>   
>>>> import scipy.io as sio 
>>>> MR = sio.MatFile5Reader(open('datafile_v7.mat'), matlab_compatible=True)
>>>>         
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
> AttributeError: 'module' object has no attribute 'MatFile5Reader'
>
> Anyway, you give me a valuable information. If this is caused by the way matlab 
> saves the data, this means I was not doing anything wrong. So perhaps the best 
> way to solve this kind of problems is to use some other way of saving data in 
> matlab (fprintf and friends).
>
> Thank you 
>
> Carlos Medrano
>
>
>
> _______________________________________________
> SciPy-user mailing list
> SciPy-user at scipy.org
> http://projects.scipy.org/mailman/listinfo/scipy-user
>   
>>> io.MatFile5Reader
<class 'scipy.io.mio5.MatFile5Reader'>
>>> scipy.__version__
'0.5.2.dev2289'

I guess you need a recent version of scipy.

Nils


 




More information about the SciPy-User mailing list