【发布时间】:2018-04-12 19:41:42
【问题描述】:
我正在使用 scipy.io 通过 python 加载 .mat 文件。然后我想在 Visual Studio 中使用 c++ 导入这个 python 脚本。
例如。 1: testpython.py
b=[0,1,2,3]
testimport.cpp
PyObject *pName = PyUnicode_FromString((char*)"testpython");
std::cout << pName << std::endl;
// Load the module object
PyObject *pModule = PyImport_Import(pName);
std::cout << pModule << std::endl;
PyObject *b = PyObject_GetAttrString(pModule, "b");
std::cout << b << std::endl;
PyObject *barray = PyArray_FromObject(b, NPY_DOUBLE, 1, 2);
std::cout << barray << std::endl;
这行得通,但这不是我想做的。
例如。 2:
testpython.py
import scipy.io as sio
x=sio.loadmat('matfile.m')
y=x['variable1']
testimport.cpp
PyObject *pName = PyUnicode_FromString((char*)"testpython");
std::cout << pName << std::endl;
// Load the module object
PyObject *pModule = PyImport_Import(pName);
std::cout << pModule << std::endl;
PyObject *b = PyObject_GetAttrString(pModule, "y");
std::cout << b << std::endl;
PyObject *barray = PyArray_FromObject(b, NPY_DOUBLE, 1, 2);
std::cout << barray << std::endl;
pModule 在 python 中使用 sio.loadmat 时返回 null 并且代码中断,但在不使用 sio.loadmat 时它可以工作。有没有人对正在发生的事情以及如何解决这个问题有任何建议?
谢谢!
【问题讨论】:
-
testpython.py用作 Python 脚本时是否运行?结果y是什么? (形状,dtype)。根据 MATLAB 源,loadmat 字典可能非常复杂。 -
形状为(120,120,60),dtype为float64。
-
是的,testpython.py 在 python 中运行。
标签: python c++ visual-studio-2015 scipy