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

Abaqus中基于3D坐标点计算样条曲线长度的索引越界问题求助

错误原因

你创建的N是二维数组,形状为(1, n)(n为坐标点数量,此处为19),第一个维度(轴0)的长度只有1,而循环变量j的取值范围是0到17,当j>=1时访问N[j]等价于访问轴0的第j个元素,自然触发越界报错。同时后续sum[N]的写法也存在语法错误,sum是函数需要用括号传参。

修复方案

方法1:最小改动修复原有逻辑

直接将N定义为长度匹配相邻点对数的一维数组,同时修正求和语法:

# 19个点共有18段相邻距离,N长度设为len(CoGZ_Init)-1即可
N = np.zeros(len(CoGZ_Init)-1)
for j in range(0, len(CoGZ_Init)-1):
    x1 = CoGX_Init[j]
    x2 = CoGX_Init[j+1]
    y1 = CoGY_Init[j]
    y2 = CoGY_Init[j+1]
    z1 = CoGZ_Init[j]
    z2 = CoGZ_Init[j+1]
    N[j] = np.sqrt((x2-x1)**2+(y2-y1)**2+(z2-z1)**2)

# 求和用函数括号,numpy数组直接用np.sum效率更高
print(np.sum(N))

方法2:更简洁的向量化实现(无需循环)

用numpy内置的差分函数直接计算所有相邻点的差值,再批量求距离累加:

# 分别计算x/y/z三个方向的相邻点差值
dx = np.diff(CoGX_Init)
dy = np.diff(CoGY_Init)
dz = np.diff(CoGZ_Init)
# 批量计算所有段的距离再求和
total_length = np.sum(np.sqrt(dx**2 + dy**2 + dz**2))
print(total_length)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:54:03