回 帖 发 新 帖 刷新版面

主题:能否对矩阵进行这样的整体操作

一个矩阵a,如果它的每个元素都小于某个值eps=0.00001就执行某个操作,可以整体操作码?

if (a<eps) then

还需要对a里面的每个元素都操作吗?
if (a(i,j)<eps) then
?

回复列表 (共11个回复)

沙发


用第二种或者forall。

板凳

[quote]
用第二种或者forall。[/quote]
implicit none

do i=1,2*m
   do j=1,2*m
 hclc(i,j)=conjg(hl(j,i))
 hcrc(i,j)=conjg(hr(j,i))
   end do
 end do

这样表达有错吗?怎么提示出错:
Warning: This argument's data type is incompatible with this intrinsic procedure; procedure assumed EXTERNAL.   [HL]
 hclc(i,j)=conjg(hl(j,i))

这段话大体上是:这个数据类型与内部过程不一致;程序假定它为外部(变量)。

Error: This name does not have a type, and must have an explicit type.   [CONJG]
 hclc(i,j)=conjg(hl(j,i))
conjg是内部函数,怎么还需要定义类型呢?[em8][em8][em8][em10][em10][em10][em14][em14][em14][em14]

3 楼


我虽然没用过这个函数,但我猜其参数就应该是一个二维复数数组,即复数矩阵,整体操作即可!
试试:
 hclc=conjg(hl)
 hcrc=conjg(hr)

4 楼


如果一个矩阵的维数是(n,n),那么它的逆矩阵的维数也该是(n,n)吧?[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em15][em15][em15][em15][em15][em14][em14][em14]

5 楼

[quote]
我虽然没用过这个函数,但我猜其参数就应该是一个二维复数数组,即复数矩阵,整体操作即可!
试试:
 hclc=conjg(hl)
 hcrc=conjg(hr)
[/quote]

这样整体操作能让两个矩阵共轭吗?互为厄米

6 楼


晕,打印出来看不就行了吗?!

7 楼

用all。

8 楼

最简单的方法是用where代替if

9 楼

if( all( a < eps ) )

10 楼

樓主可以關注一下:all any sum等等可自動并行的語句,當然forall也在其中:)

我来回复

您尚未登录,请登录后再回复。点此登录或注册