import tables from Matlab struct to matrices in python

57 views (last 30 days)
I want to import tables from a struct in matlab and to store them in python as matrices.
this is the python code I tried
import scipy.io
import numpy as np
# Load the .mat file
data = scipy.io.loadmat('file.mat')
# Access the struct within the loaded data
my_struct = data['structkey']
# Convert each table to a matrix
table1_matrix = my_struct['table1'][0, 0]['arr']
print(table1_matrix)
this is whatwas printed:
[array([[3707764736],
[ 2],
[ 1],
[ 1],
[ 1],
[ 1]], dtype=uint32)]
I can't understand what is printed and don't know what to do to get the table stored in the struct as matrice in python

Answers (1)

ProblemSolver
ProblemSolver on 5 Jul 2023
You need to careful about the datatype that you are working with.
I assume you are working with uint32, which is an unsigned 32-bit integer. Therefore, you have convert the data structure of the table:
table1_matrix = np.array(my_struct['table1'][0, 0]['arr'], dtype=np.float64)
I hope this helps!
  4 Comments
Mayssa Chouat
Mayssa Chouat on 5 Jul 2023
This is my .mat file and it only stores a 1*1 struct with 8 fields
ProblemSolver
ProblemSolver on 5 Jul 2023
Edited: ProblemSolver on 5 Jul 2023
Try using this then:
import scipy.io
data = scipy.io.loadmat('file.mat');
temperature1 = data['your_field_temperature'] % replace 'm' with the field name that you have such as temperature_r..., the complete name
. % create each variable name
. % another variable and so on
print(temperature1)
This is the output I get.

Sign in to comment.

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!