FORTRANとMATLABの両方について少し知っているので、どちらも得意ではないようです。
MATLABは行列の処理に優れていることがわかりましたが、Fortranプログラムの暗黙のインターフェイスはかなり便利であることがわかりました(要求された変数、特に一部の大きな配列を、入力ダミー引数として配置せずに暗黙の関数に渡すことができます。また、渡すこともできます。呼び出し側プログラムに戻るインターフェイスで要求される変数)。
私は、MATLABに暗黙のインターフェイスと同様のメカニズムがあり、FORTRANの場合と同じように作業できるかどうか疑問に思っています。(グローバル変数はあまり良くないようです。関数を頻繁に呼び出そうとすると、面倒な作業になってしまうからです。おそらく私は間違っています)
あなたの意見は何ですか?ありがとう。
次に例を示します。
PROGRAM test_function
IMPLICIT NONE
REAL :: A, B
REAL :: C,D,E
A = 1
B = 2
D = 3
E = xf(A)-A
WRITE (*,*), "A = ", A
WRITE (*,*), "B = ", B
WRITE (*,*), "C = ", C
WRITE (*,*), "D = ", D
WRITE (*,*), "E = ", E
CONTAINS
FUNCTION xf(x)
IMPLICIT NONE
REAL, INTENT(IN) :: x
REAL :: xf
C = x+B
D = x+D
xf = A+B+C
END FUNCTION xf
END PROGRAM test_function
Dは、ダミーの引数として受け取られることなく関数xf(・)に渡されます。また、Dは制限なしで渡される可能性があります。プログラムの結果は次のとおりです。
A = 1.0000000
B = 2.0000000
C = 3.0000000
D = 4.0000000
E = 5.0000000