作者e84011095 (天龙鲁蛇)
看板Fortran
标题[问题] 一维矩阵资料 各元素比大小
时间Fri Sep 9 13:31:29 2016
现在我有的资料如下:
12.1000000000000
11.5666666666667
9.40000000000000
10.0333333333333
.
.
.
11.7333333333333
共110笔数据,存成.txt档,欲设计一个可计算Kendall系数的程式。
Kendall 相关系数的计算方法如下:
1. 将n组资料对(x,y),按x值的大小排列,使x1为最小、xn为最大,排列结果为( x1, y1
), ( x2 , y2 ), ..., ( xn , yn )。其中,x 为自变数或影响变数,y 是应变数。
2. 检视所有的n(n-1)/2 个yi 与 yj 的比较,计算当序号i > j 时 yi > yj 的个数
P,以及 yi < yj 的个数M,令S = P-M。
我自己写的code如下:
program project01
real,allocatable:: A(:)
allocate( A(110) ); A=0.
open(10,file='mtempnorth.txt')
do i=1,110
read(10,*) A(i)
end do
close(10)
do i=1,109
if(A(i+1)>A(i))then
write(*,*)'p',i
else if(A(i+1)==A(i))then
write(*,*)i
else
write(*,*)'M',i
end if
end do
stop
end
但这样子只能拿x1比一轮,我想要第二轮再拿x2与x3.x4...x110比大小,第三轮拿x3与
x4.x5...x110比大小,依此类推!
目前我只有想到写109个do loop暴力法求解,有没有更快的方法比完109轮且快速得到P与M
的个数?
小弟fortran新手QQ,八月才开始看彭国伦的书自学!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.190.65
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Fortran/M.1473399092.A.E09.html
※ 编辑: e84011095 (140.112.190.65), 09/09/2016 13:34:53
※ 编辑: e84011095 (140.112.190.65), 09/09/2016 14:23:13
1F:推 terryys: A是allocatable但是你没有allocate,先解决这个问题 09/09 14:45
已修改,还是run time error
※ 编辑: e84011095 (140.112.190.65), 09/09/2016 16:06:09
2F:推 rex0707: A(110) 当i=110时 i+1=111 A(111)=??? 09/09 16:14
对齁~我好蠢...
※ 编辑: e84011095 (140.112.190.65), 09/09/2016 17:20:30
※ 编辑: e84011095 (140.112.190.65), 09/09/2016 17:24:01
3F:→ kkarthur: 第一部分就是标准的排序阿,找排序法的东西研究一下 09/10 13:25
4F:→ janhon: 直接用maxloc,maxval函数取如何 09/11 08:18
5F:推 jubilee2: 再写一个回圈 09/18 02:17