Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 创建Fortran/C/Matlab函数/(子)例程用于数值符号矩阵/数组计算_Python_C_Arrays_Fortran_Codegen - Fatal编程技术网

Python 创建Fortran/C/Matlab函数/(子)例程用于数值符号矩阵/数组计算

Python 创建Fortran/C/Matlab函数/(子)例程用于数值符号矩阵/数组计算,python,c,arrays,fortran,codegen,Python,C,Arrays,Fortran,Codegen,我想使用自动生成的外部函数计算在python Symphy中创建的数字符号矩阵 我的目标是生成这样一个子程序 subroutine my_fun(y, x, z, m, C) implicit none REAL*8, intent(in) :: x REAL*8, intent(in) :: y REAL*8, intent(in) :: z INTEGER*4, intent(in) :: m REAL*8, intent(out), dimension(1:m) :: C INTEGER*

我想使用自动生成的外部函数计算在python Symphy中创建的数字符号矩阵

我的目标是生成这样一个子程序

subroutine my_fun(y, x, z, m, C)
implicit none
REAL*8, intent(in) :: x
REAL*8, intent(in) :: y
REAL*8, intent(in) :: z
INTEGER*4, intent(in) :: m
REAL*8, intent(out), dimension(1:m) :: C
INTEGER*4 :: line

line=1
C(line) = x + y*z
line=line+1
C(line) = y*z-x


end subroutine
我尝试以以下方式使用codegen

C = symbols('C', cls=IndexedBase)
m= symbols('m', integer=True)
i = Idx('line', m)
[(c_name, c_code), (h_name, c_header)] = codegen(('my_fun', Eq(C[line],x+y*z)),\
 'F95', 'test10', header=True, empty=True)
但结果是相当遥远的

subroutine my_fun(x, y, z, m, C)
implicit none
REAL*8, intent(in) :: x
REAL*8, intent(in) :: y
REAL*8, intent(in) :: z
INTEGER*4, intent(in) :: m
REAL*8, intent(out), dimension(1:m) :: C
INTEGER*4 :: line

do line = 1, m
   C(line) = x + y*z
end do

end subroutine
简而言之,我无法输入多个表达式并自由生成数组。我从你那里得到一些想法

胜过