好像我不擅長FORTRAN或MATLAB,但對它們都有一點了解。雖然我發現MATLAB擅長處理矩陣,但我還發現fortran程序中的隱式接口相當方便(我可以將聲明的變量,特別是某些大型數組,傳遞給隱式函數,而不會將它們作爲輸入虛擬參數,並且我也可以輕鬆地將界面中聲明的變量傳回給調用程序)。matlab中的隱式接口
我只是想知道在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
我不清楚Fortran中的隱式接口是什麼。從你的問題的文本,這是否意味着變量(也許具有相同的名稱)以某種方式傳入和傳出子例程而不作爲參數傳遞? – Pursuit 2012-04-13 03:26:35
我很清楚Fortran中的隱式接口是什麼。但是這個術語在問題中的使用使我懷疑OP使用非Fortran標準方式的術語。 OP可以更明確嗎? – 2012-04-13 04:35:43
@Lagrange:你可以重新編輯你的代碼片段並從評論中刪除它們。很難弄清楚你現在的程序是什麼。 – 2012-04-13 12:33:32