Fortran Coder

标题: fortran有没有像matlab的矩阵条件赋值操作? [打印本页]

作者: mmSCI    时间: 2020-2-27 10:12
标题: fortran有没有像matlab的矩阵条件赋值操作?
比如,matlab中二维矩阵A,对A中大于0的元素赋值1,小于零的赋值-1,A(A>0)=1 A(A<0)=-1.fortran有没有类似的简单操作。

作者: li913    时间: 2020-2-27 11:35
[Fortran] 纯文本查看 复制代码
where(a>0)
a=1
else where(a<0)
a=-1
end where


or

where(abs(a)>0) a=a/abs(a)

作者: mmSCI    时间: 2020-2-27 11:38
li913 发表于 2020-2-27 11:35
where(a>0)
a=1
else where(a0) a=a/abs(a)

感谢,感谢
作者: mmSCI    时间: 2020-2-27 11:53
li913 发表于 2020-2-27 11:35
where(a>0)
a=1
else where(a0) a=a/abs(a)

那如果是大于0的+1,小于0的减1是不是这样?
where(a>0)
a=a+1
else where(a<0)
a=a-1
end where
作者: li913    时间: 2020-2-27 21:23
mmSCI 发表于 2020-2-27 11:53
那如果是大于0的+1,小于0的减1是不是这样?
where(a>0)
a=a+1

是的。如果a是实数,你需要考虑误差,即多小的数看作零? 比如:where(a>1.0e-6)




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2