在使用Fortran 90时,我在以下部分遇到了错误
if(abs(pic1(1,j,1).eq.fitra(i))) fitcrv(j)=fitmax(j)
1
错误是
错误:在(1)处''''的'''参数必须是数字类型
你能帮忙吗?
答案 0 :(得分:1)
这不是使用abs()
但使用逻辑表达式的问题。正如francescalus已经指出的那样,你得到pic1(1,j,1).eq.fitra(i)
的绝对值,这在fortran中没有意义(值为true
或false
且不能置于绝对值中)。例如,Matlab会将其转换为整数,并愉快地为您提供abs(1)
,这将是1
。你很幸运fortran编译器没有这样做并立即停止,这样的bug很难被发现。
您可能打算abs(pic1(1,j,1)) .eq. fitra(i)
。