You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fortran K均值距离计算的正确do循环结构实现问询

K均值距离计算Do循环修正方案

现有代码核心问题:

  • 你把i作为外层固定循环变量,每次内层y循环时i值不会变动,所有y对应的计算结果会覆盖同一个i位置的distance值,完全不符合逐次自增的需求
  • 嵌套逻辑和你预期的「y遍历完k个聚类中心才更新j、每次距离计算都更新i」的规则不匹配

修正后代码(Fortran语法)

! 初始化i为distance数组的列计数器,初始值为1
i=1
! 外层遍历所有数据点j
do j=1,N
    ! 内层遍历所有聚类中心y
    do y=1,k
        ! 计算当前数据点与聚类中心的坐标差
        distance(1,i) = abs(r(1,j) - centroid(1,y))
        distance(2,i) = abs(r(2,j) - centroid(2,y))
        ! 每次计算完成后i自增,下一次计算使用新的列位置
        i = i + 1
    end do
end do

逻辑说明

  • 完全符合预期规则:只有当y走完1到k的所有取值后,外层的j才会更新
  • 每次距离计算对应唯一的i值,不会出现结果覆盖,循环结束后i刚好等于N*k+1,和你定义的distance数组总列数z(z=N*k)完全匹配

内容的提问来源于stack exchange,提问作者Dono Don

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:06:00