Python调用MATLAB Engine创建带权重图报错,权重格式问题求助
解决Python调用MATLAB Engine创建带权重图的类型错误
错误原因
Python原生列表传递给MATLAB Engine时,无法自动匹配MATLAB graph函数要求的类型:
- 字符节点列表会被识别为字符矩阵而非独立节点集合
- 数值权重列表不会自动转为MATLAB标准的
double类型数组,触发类型校验报错
修正后的代码
import matlab.engine # 启动MATLAB引擎 eng = matlab.engine.start_matlab() # 转换节点列表为MATLAB cell数组 s1 = eng.cell(['a', 'b', 'c', 'd']) t1 = eng.cell(['b', 'c', 'd', 'e']) # 转换权重列表为MATLAB double数组 w1 = eng.double([10, 20, 30, 40]) # 创建带权重图 g = eng.graph(s1, t1, w1) # 查看生成的图(需指定nargout=0避免返回值报错) eng.view(g, nargout=0) # 关闭MATLAB引擎 eng.quit()
关键说明
- 使用
eng.cell()包装Python字符串列表,确保MATLAB将每个元素识别为独立的节点字符向量 - 使用
eng.double()包装数值列表,生成MATLAB认可的double类型权重数组,满足graph函数的类型要求 - 调用无返回值的MATLAB函数(如
view)时,必须添加nargout=0参数,否则Python会因等待返回值而阻塞报错
内容的提问来源于stack exchange,提问作者Amit Zeevi
相关产品推荐
相关产品推荐

