第二页。传递数组。“转换第二个参数“xmin”失败mga.init公司到C/Fortran数组“

2024-10-01 15:36:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次使用F2PY。我有一个FORTRAN例程,类似于:

    SUBROUTINE init(ranMatr,low,upp,nbvar,size)

    IMPLICIT NONE
    INCLUDE 'parameter.h'

    DOUBLE PRECISION ranMatr(dimpop,dim), low(dim), upp(dim),sigma
    INTEGER k, j, nbvar,size

CF2PY   intent(in) low, upp, nbvar, size
CF2PY   intent(in,out) ranMatr

    DO k = 1, size
    DO j = 1, nbvar
        CALL uniforme(1,sigma)
        ranMatr(k,j) = low(j) + sigma * (upp(j) - low(j))        
    ENDDO
    ENDDO
    RETURN
    END

它基本上初始化一个称为“ranMatr”的随机矩阵,其值在low和upp定义的范围内。Uniforme是从均匀分布返回值的例程。在

现在,我安装了numpy和f2py,并尝试用这段代码测试它。在

我创建python输入如下:

^{pr2}$

然后试着运行程序:

init(ranMatr, low, upp, 5, 20)

但我总是收到这样的错误信息:

0-th dimension must be fixed to 100 but got 5
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
mga.error: failed in converting 2nd argument `low' of mga.init to C/Fortran array

我想问题出在维数上,但我明白dim应该是“低”向量维数的上限。在

我做错什么了?在


Tags: toinsizeinit例程dosigmalow
1条回答
网友
1楼 · 发布于 2024-10-01 15:36:24

必须按错误消息中指定的方式传递low数组,其维数为dim。 一些information可以在这里找到,点“2”。或者您可以始终使用size,而不是dim

SUBROUTINE init(ranMatr,low,upp,nbvar,size)
...
INTEGER k, j, nbvar,size
DOUBLE PRECISION ranMatr(dimpop,size), low(size), upp(size),sigma
...

相关问题 更多 >

    热门问题