询问正确的 do 循环 fortran
Asking proper do loop fortran
我写了一个代码,用于测量距离k的意思。
所以,r 是我的数据点的数组。我想用每个质心减少数据点的每个坐标。所以,流程就像,J 只有在 y=k 时才会改变。与此同时,我应该继续前进(我的号码应该保持更新+1)。 distance 是二维数组,Z 是列索引。 Distance 是空的二维数组,其值将由归约结果填充,这就是每次计算都应更新 i 值的原因。 N 是数据点的数量,k 是簇的数量。 z、k 和 n 是不同的值。
我当前代码的问题,
do i=1,z
do j=1,n
y=1
do while
y<=k
distance(1,i)=abs( r(1,j) - centroid (1,y) )
distance(2,i)=abs( r(2,j) - centroid (2,y) )
y=y+1
end do
end do
end do
问题是,i 值没有保持更新。我需要我的价值保持增长,+1
这是一个猜测,因为我仍然对你的问题感到困惑,但这是你想要的吗?
i = 0
do j=1,n
do y=1,k
i = i+1
distance(:,i) = abs(r(:,j)-centroid(:,y))
enddo
enddo
所以在 r
数组上循环 j
,在 centroid
数组上循环 y
(但最多 k
),并递增 i
两者的每个组合?
这假设 distance
数组足够大 i
不会超出它。
我写了一个代码,用于测量距离k的意思。
所以,r 是我的数据点的数组。我想用每个质心减少数据点的每个坐标。所以,流程就像,J 只有在 y=k 时才会改变。与此同时,我应该继续前进(我的号码应该保持更新+1)。 distance 是二维数组,Z 是列索引。 Distance 是空的二维数组,其值将由归约结果填充,这就是每次计算都应更新 i 值的原因。 N 是数据点的数量,k 是簇的数量。 z、k 和 n 是不同的值。
我当前代码的问题,
do i=1,z
do j=1,n
y=1
do while
y<=k
distance(1,i)=abs( r(1,j) - centroid (1,y) )
distance(2,i)=abs( r(2,j) - centroid (2,y) )
y=y+1
end do
end do
end do
问题是,i 值没有保持更新。我需要我的价值保持增长,+1
这是一个猜测,因为我仍然对你的问题感到困惑,但这是你想要的吗?
i = 0
do j=1,n
do y=1,k
i = i+1
distance(:,i) = abs(r(:,j)-centroid(:,y))
enddo
enddo
所以在 r
数组上循环 j
,在 centroid
数组上循环 y
(但最多 k
),并递增 i
两者的每个组合?
这假设 distance
数组足够大 i
不会超出它。