主题:能否对矩阵进行这样的整体操作
tianhy2010
[专家分:60] 发布于 2010-10-11 09:17:00
一个矩阵a,如果它的每个元素都小于某个值eps=0.00001就执行某个操作,可以整体操作码?
if (a<eps) then
还需要对a里面的每个元素都操作吗?
if (a(i,j)<eps) then
?
回复列表 (共11个回复)
沙发
jstzhurj [专家分:4680] 发布于 2010-10-11 09:35:00
用第二种或者forall。
板凳
tianhy2010 [专家分:60] 发布于 2010-10-11 10:04:00
[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 楼
jstzhurj [专家分:4680] 发布于 2010-10-11 10:19:00
我虽然没用过这个函数,但我猜其参数就应该是一个二维复数数组,即复数矩阵,整体操作即可!
试试:
hclc=conjg(hl)
hcrc=conjg(hr)
4 楼
tianhy2010 [专家分:60] 发布于 2010-10-11 10:20:00
如果一个矩阵的维数是(n,n),那么它的逆矩阵的维数也该是(n,n)吧?[em2][em2][em2][em2][em2][em2][em2][em2][em2][em2][em15][em15][em15][em15][em15][em14][em14][em14]
5 楼
tianhy2010 [专家分:60] 发布于 2010-10-11 10:27:00
[quote]
我虽然没用过这个函数,但我猜其参数就应该是一个二维复数数组,即复数矩阵,整体操作即可!
试试:
hclc=conjg(hl)
hcrc=conjg(hr)
[/quote]
这样整体操作能让两个矩阵共轭吗?互为厄米
6 楼
jstzhurj [专家分:4680] 发布于 2010-10-11 10:32:00
晕,打印出来看不就行了吗?!
7 楼
cgl_lgs [专家分:21040] 发布于 2010-10-11 10:50:00
用all。
8 楼
dongyuanxun [专家分:7180] 发布于 2010-10-11 10:53:00
最简单的方法是用where代替if
9 楼
adda [专家分:1520] 发布于 2010-10-11 13:22:00
if( all( a < eps ) )
10 楼
cgl_lgs [专家分:21040] 发布于 2010-10-11 14:30:00
樓主可以關注一下:all any sum等等可自動并行的語句,當然forall也在其中:)
我来回复