马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
-
- fortran中的数组,如果快速删除某行和某列的所有元素,例如N*N的数组,删除其中的第i
- 行,第i列,第j行,第j列的所有元素,形成一个(N-2)*(N-2)的数组(i,j可为1,N之间的
- 任何一个数值)。
- 不知道有没有什么方便快速的方法或命令?多谢了。
复制代码
下面是在水木社区上得到的一个很好的方法:
发信人: Konzern (拜坛祭风), 信区: NumComp
标 题: Re: 请教Fortran中快速删除某行某列元素的方法
发信站: 水木社区 (Mon May 28 10:57:38 2007), 站内
假定a(N,N)是allocatable的,定义一个logical的变量b(N,N)以及一个矢量c((N-2)*(N-2))
- b = .true.
- b(i,:) = .false.
- b(j,:) = .false.
- b(:,i) = .false.
- b(:,j) = .false.
- !
- c = pack(a, b, c)
- !
- deallocate( a)
- allocate( a(N-2, N-2) )
- !
- a = reshape(c, (/N-2,N-2/))
- !
复制代码
这样应该可以完成你想要的效果;已上是Fortran90的语句。
如果你另外定义一个变量d,那就不用deallocate和allocate a了,直接d=reshape(c,
(/N-2... |