You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用MATLAB roots函数报isfinite不支持cell类型输入错误如何解决

问题结论

该问题是代码的传参类型适配错误,既不是MATLAB本身的缺陷,也和你推测的future对象无关。

报错根因

错误日志里的提示Undefined function 'isfinite' for input arguments of type 'cell'已经明确了问题核心:
MATLAB Python引擎的默认类型转换规则中,Python原生列表传入MATLAB时会被自动转换为cell数组,而roots函数要求输入为数值数组,isfinite方法不支持cell类型的参数,因此抛出报错。

修复方案

你只需要在传参前将Python列表显式转换为MATLAB支持的数值数组类型即可,修改后的可运行代码如下:

import matlab.engine
# 导入MATLAB内置的double数组类型
from matlab import double as matlab_double

matlab_eng = matlab.engine.start_matlab()
# 显式将Python list转换为MATLAB double数组
poly = matlab_double([4,1])
print(matlab_eng.roots(poly))

补充说明

  • 你猜测的future对象问题不成立:future对象是调用MATLAB函数时指定async=True参数才会返回的异步执行对象,你当前是同步调用,入参没有被封装为future。
  • 所有需要传入MATLAB数值类型参数的函数,都需要提前将Python原生的列表、数值等显式封装为matlab.double/matlab.int32等对应类型,避免被默认转为cell数组。

内容的提问来源于stack exchange,提问作者Alex Elzenaar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 17:18:00