Fortran Coder

查看: 5842|回复: 4

[数值问题] fortran有没有像matlab的矩阵条件赋值操作?

[复制链接]

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
发表于 2020-2-27 10:12:10 | 显示全部楼层 |阅读模式
比如,matlab中二维矩阵A,对A中大于0的元素赋值1,小于零的赋值-1,A(A>0)=1 A(A<0)=-1.fortran有没有类似的简单操作。

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
发表于 2020-2-27 11:35:11 | 显示全部楼层
[Fortran] 纯文本查看 复制代码
where(a>0)
a=1
else where(a<0)
a=-1
end where


or

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

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
 楼主| 发表于 2020-2-27 11:38:39 | 显示全部楼层
li913 发表于 2020-2-27 11:35
where(a>0)
a=1
else where(a0) a=a/abs(a)

感谢,感谢

33

帖子

12

主题

0

精华

熟手

F 币
138 元
贡献
93 点
 楼主| 发表于 2020-2-27 11:53:03 | 显示全部楼层
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

796

帖子

2

主题

0

精华

大宗师

F 币
3787 元
贡献
2266 点
发表于 2020-2-27 21:23:25 | 显示全部楼层
mmSCI 发表于 2020-2-27 11:53
那如果是大于0的+1,小于0的减1是不是这样?
where(a>0)
a=a+1

是的。如果a是实数,你需要考虑误差,即多小的数看作零? 比如:where(a>1.0e-6)
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-4-19 09:07

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表