Fortran Coder

查看: 5859|回复: 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有没有类似的简单操作。
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
沙发
发表于 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

798

帖子

2

主题

0

精华

大宗师

F 币
3793 元
贡献
2268 点
5#
发表于 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-5-2 10:46

Powered by Tencent X3.4

© 2013-2024 Tencent

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