Konvertieren einer Matlabcell in Python
Verfasst: Donnerstag 8. Februar 2018, 12:46
Hallo,
ich habe Datensätze im .mat Format bekommen. Nun versuche ich die zu Plotten.
Out: <class 'dict'>
dict_keys(['__version__', '__function_workspace__', '__globals__', '__header__', 'Datensatz'])
Nun ist das ein sehr verschachtelter File:
{'Datensatz': array([[ MatlabOpaque([(b'', b'MCOS', b'string', [[3707764736], [2], [1], [1], [1], [1]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
MatlabOpaque([(b'', b'MCOS', b'datetime', [[3707764736], [2], [1], [1], [34], [2]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
array([[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
nan, nan, nan],
[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
5.00000000e-01, 2.43839992e+03, nan],
[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
5.00000000e-01, 1.00583997e+03, nan],
...,
[ 6.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan],
[ 6.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan],
[ 8.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan]])],
[ MatlabOpaque([(b'', b'MCOS', b'string', [[3707764736], [2], [1], [1], [2], [1]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
MatlabOpaque([(b'', b'MCOS', b'datetime', [[3707764736], [2], [1], [1], [35], [2]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
array([[ 2.50000000e+02, 5.65888400e+00, 9.99900000e+03, ...,
5.00000000e-01, 2.74319991e+03, nan],
[ 2.50000000e+02, 4.62999600e+00, 9.99900000e+03, ...,
5.00000000e-01, 2.74319991e+03, nan],
[ 2.60000000e+02, 5.14444000e+00, 9.99900000e+03, ...,
2.50000000e-01, 7.01039978e+02, nan],
....
....
....
'__function_workspace__': array([[ 0, 1, 73, ..., 0, 0, 0]], dtype=uint8),
'__globals__': [],
'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Feb 7 10:47:40 2018',
'__version__': '1.0'}
Wenn ich das richtig sehe ist das eine 33x3 Cell in der in der Ersten Spalte Buchstaben stehen und in den Spalten 2 und 3 jeweils eine weitere Cell mit verschiedenen einträgen...
Nun möchte ich z.B. von der ersten Zeile
1 2 3
"DAAD" 4053x1 datetime 4053x9 double
Die datetime über eine Zeile der 3. SPalte (4053x9 double) plotten in der verschiedene Größen abgespeichert sind plotten (x.plot(Zeit, Messwert))
Wie kann ich das realisieren?
Gruß
ich habe Datensätze im .mat Format bekommen. Nun versuche ich die zu Plotten.
Code: Alles auswählen
import numpy as np
# Import the scipy.io
import scipy.io
# load .mat file into dictionary x
x = scipy.io.loadmat('/home/samothkociok/Desktop/Algerien.mat')
print(type(x))
print(x.keys())
dict_keys(['__version__', '__function_workspace__', '__globals__', '__header__', 'Datensatz'])
Nun ist das ein sehr verschachtelter File:
{'Datensatz': array([[ MatlabOpaque([(b'', b'MCOS', b'string', [[3707764736], [2], [1], [1], [1], [1]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
MatlabOpaque([(b'', b'MCOS', b'datetime', [[3707764736], [2], [1], [1], [34], [2]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
array([[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
nan, nan, nan],
[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
5.00000000e-01, 2.43839992e+03, nan],
[ 0.00000000e+00, 0.00000000e+00, 8.00000000e+03, ...,
5.00000000e-01, 1.00583997e+03, nan],
...,
[ 6.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan],
[ 6.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan],
[ 8.00000000e+01, 1.02888800e+00, 9.99900000e+03, ...,
7.50000000e-01, 3.04799990e+03, nan]])],
[ MatlabOpaque([(b'', b'MCOS', b'string', [[3707764736], [2], [1], [1], [2], [1]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
MatlabOpaque([(b'', b'MCOS', b'datetime', [[3707764736], [2], [1], [1], [35], [2]])],
dtype=[('s0', 'O'), ('s1', 'O'), ('s2', 'O'), ('arr', 'O')]),
array([[ 2.50000000e+02, 5.65888400e+00, 9.99900000e+03, ...,
5.00000000e-01, 2.74319991e+03, nan],
[ 2.50000000e+02, 4.62999600e+00, 9.99900000e+03, ...,
5.00000000e-01, 2.74319991e+03, nan],
[ 2.60000000e+02, 5.14444000e+00, 9.99900000e+03, ...,
2.50000000e-01, 7.01039978e+02, nan],
....
....
....
'__function_workspace__': array([[ 0, 1, 73, ..., 0, 0, 0]], dtype=uint8),
'__globals__': [],
'__header__': b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Feb 7 10:47:40 2018',
'__version__': '1.0'}
Wenn ich das richtig sehe ist das eine 33x3 Cell in der in der Ersten Spalte Buchstaben stehen und in den Spalten 2 und 3 jeweils eine weitere Cell mit verschiedenen einträgen...
Nun möchte ich z.B. von der ersten Zeile
1 2 3
"DAAD" 4053x1 datetime 4053x9 double
Die datetime über eine Zeile der 3. SPalte (4053x9 double) plotten in der verschiedene Größen abgespeichert sind plotten (x.plot(Zeit, Messwert))
Wie kann ich das realisieren?
Gruß