Search code examples
pythonmatlabdictionaryscipymat-file

Creating *.mat file from Python without using dictionary


I have few lists which i want to save it to a *.mat file. But according to scipy.io.savemat command documentation i Need to create a dictionary with the lists and then use the command to save it to a *.mat file.

If i save it according to the way mentioned in the docs the mat file will have structure with variables as the Arrays which i used in the dictionary. Now i have a Problem here, I have another program (which is not editable) will use the mat files and load them to plot some Graphs from the data. The program cannot process the structure because it is written in a way where if it loads a mat files and then it will directly process the Arrays in it.

So is there a way to save the mat file without using dictionaries? Please see the Image for more understanding*.mat file with struct

*.mat file without struct

Thanks

This is the sample algorithm i used to save my *.mat file

import os
os.getcwd()
os.chdir(os.getcwd())
import scipy.io as sio

x=[1,2,3,4,5]
y=[234,5445,778] #can be 1000 lists

data={}

data['x']=x
data['y']=y
sio.savemat('test.mat',{'interpolated_data':data})

Solution

  • How about

    scipy.io.savemat('interpolated_data_max_compare.mat', 
                     {'NA1_X_order10_ACCE_ms2': np.zeros((3000,1)),
                      'NA1_X_order10_DISP_mm': np.ones((3000,1))})
    

    Should work fine...

    According to the code you added in your question, instead of sio.savemat('...', {'interpolated_data':data}), just save

    sio.savemat('...', data)
    

    and you should be fine: data is already a dictionary you don't need to add an extra level with {'interpolated_data': data} when saving.