little620 发表于 2019-4-12 09:33:38

fortran中向量可以和数字比较大小吗

新手求助各位大佬,a = MERGE(0.0_8,a,abs(a)<1.0e-20_8)
这个命令里面a是一个向量(REAL(8), DIMENSION(n)         :: a),1.请问向量可以和具体的数字比较大小吗?即abs(a)<1.0e-20_8
2.如果这个命令是可以运行的,那是不是针对a向量里面的每一个元素进行上述merge的操作呢?

胡文刚 发表于 2019-4-12 09:43:49

如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) 允许通过数组进行判定。
如果 z 是逻辑型数组,那么merge的结果也是数组。

little620 发表于 2019-4-12 10:02:53

胡文刚 发表于 2019-4-12 09:43
如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) ...

谢谢~ fortran竟然是这样操作的hhh,好有意思,学习了学习了,多谢大佬

fcode 发表于 2019-4-12 22:51:41

数组片段和整体操作,是fortran的强项,也是区别于其他语言很独特(方便)的重要一点。

lookbook 发表于 2019-6-26 22:56:54

又复习了一遍,果然是要不停得使用才行啊

little620 发表于 2019-6-27 11:28:01

胡文刚 发表于 2019-4-12 09:43
如果 a 是数组,那么 abs(a) < 1.0e-20_8 结果就是 逻辑型数组,类似于 logical z(n)

merge( x , y , z ) ...

您好,感谢您的回复,还有一个问题
MERGE(SUM(gmat(:,1)*avec*bvec), 0.0_8, af==1 .and. bf==12)
其中gmat是n1×n2维矩阵,avec, bvec, af, bf 都是n1维的向量,我想请问一下这个结果是输出什么呢
因为我一直以为merge(x,y,z)里面x,y,z应该有相同维度,但是上式中的第一个位置用了sum函数,我以为sum输出的是一个数,所以我不知道怎么理解这个式子~

页: [1]
查看完整版本: fortran中向量可以和数字比较大小吗