我在Python中使用MATLAB中的fitdist方法,其中x为:
我尝试了不同的方法来解决这个问题,它们都给出了相同的错误:
eng.fitdist(eng.cell2mat(list(x)), 'stable')
eng.fitdist(matlab.double(list(x)), 'stable')
eng.fitdist(list(x), 'stable')
所有这些都给了我一个错误:
MatlabExecutionError:
File C:\Program Files\MATLAB\R2020b\toolbox\stats\stats\fitdist.m, line 126, in fitdist X must be a numeric column vector.
你知道怎么摆脱它吗?如何将列表转换为使用MATLAB的列向量? 我使用的是MatlabR2020B
您可以使用
matlab.double
的size
参数来创建列向量MATLAB中的列向量等价于二维矩阵,其第二维度大小等于1。
例如:大小为
[5, 1]
的矩阵是包含5列的列向量根据文件,MATLAB Arrays as Python Variables:
matlab.double
有一个可选的size
参数:可以将
size
参数设置为(x.size, 1)
以创建列向量以下语法有效(假设x是NumPy数组):
以下语法也适用:
以下代码用于测试:
更新:
在Python中读取
fitdist
的结果:读取结果具有挑战性,因为
fitdist
返回类型为'prob.StableDistribution'
的对象。以数组的形式获取结果会更容易。
我的建议是创建一个返回数组的MATLAB“包装函数”
例如:
MATALB代码文件
my_fitdist.m
:Python代码:
可能有更好的解决方案,但我没有使用MATLAB引擎的经验
相关问题 更多 >
编程相关推荐