我通常只使用R或Python,因此我对Fortran的理解确实很有限。但是目前,我必须将Fortran程序中的某些子例程提供给R。我在需要“导出”的其中一个子例程中遇到了这一行。
R2inv(1:(i2-i1-1),1:(i2-i1-1)) = .i.(corrMat((i1+1):(i2-1),(i1+1):(i2-1)))
我无法弄清楚.i.
应该在那里做什么。声明了一个i
变量,但似乎未用于该子例程。
我的编译器gfortran也无法解决这个问题。 我尝试使用谷歌搜索,但该词并不是真正的“可搜索”。
由于使用了IMSL库,也许是这些表达式的表达。
答案 0 :(得分:4)
检查IMSL Fortran库的manual,第49页:
第10章:线性代数运算符和一般函数
(...)
运算符:
.i.
计算平方非奇异矩阵的逆矩阵,或 奇异平方的MoorePenrose广义逆矩阵 矩阵或矩形矩阵。
正如@francescalus所说,fortran中用圆点括起来的标识符是运算符。
除了.lt.
之类的内在运算符之外,像这样的自定义运算符也可以编写为用作通用函数的便捷捷径。
OTOH,此类资料必须经过充分记录,以免对看到代码的人造成误解。在这种情况下,更有意义的名称.inv.
可能更适合。