Я создаю программное обеспечение, и часть этого программного обеспечения должна прочитать файл .mat и передать содержимое функции matlab в качестве аргумента.Проблема в том, что у меня плохая структура данных, я думаю.
На самом деле моя структура Matlab, называемая дескрипторы , не имеет такую же структуру данных, как мои обрабатывает в моем Python ( после преобразования )
Когда я загружаю файл .mat из python с помощью scipy.io.loadmat() , у меня есть эти 4 клавиши:
Так что в handles.simulation должно быть это содержимое:
Поэтому я использую matlab.engine для вызова функции matlab, в моем случае функция вызывается VS_Parametrise и когда я передаю свои ручки который dict :
# -*- coding: utf-8 -*-
import sys
import os
import Tkinter
import numpy as np
from tkFileDialog import askopenfilename
from structDataConfFile import structConfFile
try:
import matlab.engine
except:
print "No matlabEngine installed"
print "Running installation procedure..."
print " "
import installMatlabEngine
print " "
print "Application will exit now..."
print "Please re-run this program to continue installation!"
print " "
exit()
# Environment PATH
Mlab = os.environ.get("MATLAB")
vssFolderPath=os.environ.get("CONTIAME")+'/4_Tools/Veh_Sim_Suite/VSimu'
ContimodelPath=os.environ.get("CONTIAME")
FILETYPES = [ ("text files", "*.mat") ]
handles = dict()
def selectConfFile():
""" Return the path of .mat file
Function that open files browser to choose a .mat file and build handles
dictionnary.
"""
Tkinter.Tk().withdraw() # Close the root window
in_path = askopenfilename(filetypes=FILETYPES)
if len(in_path) == 0:
handles['Simulation'] = list()
elif len(in_path) > 0:
handles['Simulation'] = structConfFile(in_path) # HERE I FILL SIMULATION
handles['contimodel_path'] = ContimodelPath
return in_path
def Parametrize(confFile):
""" Return
Argument:
confFile -- str() Configuration File path
Function that call MatLab function passing handles structure/dict as
argument. The return value of MatLab function called VS_Parametrize(handles)
is the modified handles structure.
"""
eng = matlab.engine.start_matlab()
eng.addpath(vssFolderPath)
eng.VS_Parametrise(handles) ############# HERE I CALL VS_PARAMETRIZE
В моей функции Matlab handles.simulation есть структура структурыструктуры.В Python это должен быть словарь словаря словаря, но у меня есть эта ошибка:
И я не понимаю, почему, когда я загружаю файл вPython первый этаж структуры данных - это dict, а второй - numpy.ndarray (1-й этаж: симуляция, 2-й этаж: параметр / информация).Вот еще документация о переменных Matlab to Python
Есть идеи?