当我尝试运行它时,我得到了错误,索引4超出了轴0的范围,定义x2的行的大小为4。不知道为什么我会出错,因为matlab的等价物工作得很好。所有的帮助都是非常感谢的。代码如下:
NELEM = 5
con = np.array([[1,3], [1,2], [1,4], [2,3], [2,4]])
node = np.array([[1, 12, 0], [2, 8, 10], [3, 0, 10], [4, 24, 10]])
for a in range(0, NELEM):
n1 = con[a,0]
n2 = con[a,1]
x1 = node[n1, 1]
x2 = node[n2, 1]
dx = x2 - x1发布于 2022-06-02 23:09:00
如错误消息所示,节点数组的索引为0到3,而con数组有一个用于索引node的元素[1,4],此处的4显然超出了范围。您应该从1数组中减去con,以便进行适当的索引。注意,MATLAB数组从索引1开始,所以代码可以正常工作。
import numpy as np
NELEM = 5
con = np.array([[1,3], [1,2], [1,4], [2,3], [2,4]])
node = np.array([[1, 12, 0], [2, 8, 10], [3, 0, 10], [4, 24, 10]])
for a in range(0, NELEM):
n1, n2 = con[a]
x1 = node[n1-1, 1]
x2 = node[n2-1, 1]
dx = x2 - x1您可以在一行中使用数组索引而不是循环来实现这一点,这也会更快。
node[con[:,1]-1,1] - node[con[:,0]-1,1]
# [-12 -4 12 -8 16]https://stackoverflow.com/questions/72481585
复制相似问题