如何使用Python创建单元(线)点连接矩阵?Matlab代码转Python实现
正确Python实现代码
你原有代码运行异常的核心原因是:Python原生列表的+是拼接操作、*是重复列表操作,不支持Matlab风格的元素级广播运算,需要借助numpy的数组广播能力实现和原Matlab代码完全一致的效果。
对齐原Matlab逻辑的实现代码
import numpy as np nelments = 3 npoint = 5 # 利用numpy广播机制,和Matlab隐式广播逻辑完全匹配 connect = np.arange(1, npoint+1).reshape(-1, 1) + (npoint - 1) * np.arange(nelments) # 若需要转为Python原生列表,可添加下方代码 # connect = connect.tolist()
针对你给出的参数,上述代码输出的矩阵结构为每列对应一个单元的节点编号,和原Matlab输出结果完全一致:
array([[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12], [5, 9, 13]])
如果你需要每行对应一个单元的节点编号,调整维度顺序即可:
connect = np.arange(1, npoint+1) + (npoint - 1) * np.arange(nelments).reshape(-1, 1)
输出结果为:
array([[ 1, 2, 3, 4, 5], [ 5, 6, 7, 8, 9], [ 9, 10, 11, 12, 13]])
内容的提问来源于stack exchange,提问作者coder_beginner
相关产品推荐
相关产品推荐

