numpy 是否有一个Python等效的Matlab的势(V,X,Y)函数

gjmwrych  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(71)

python中是否有一个库可以提供与Matlab的 potentialVX)函数相同的功能,该函数可以将3D或2D梯度转化为标量势面?
我已经尝试了几种强力方法来“整合”两个U和V向量以获得Z曲面,但所有方法都非常不令人满意,缺少向量场指示的明显“波峰和波谷”。

wvyml7n5

wvyml7n51#

您可以使用scipy,特别是scipy.integrate模块
示例:

import numpy as np
from scipy.integrate import simps

# Define your 3D or 2D gradient field
grad = np.array([U, V, W]) # Replace U, V, W with your own data

# Compute the scalar potential surface
x, y, z = np.meshgrid(np.arange(grad.shape[1]), np.arange(grad.shape[0]), np.arange(grad.shape[2]))
potential = np.zeros_like(grad)
for i in range(grad.shape[0]):
    for j in range(grad.shape[1]):
        for k in range(grad.shape[2]):
            potential[i,j,k] = simps(simps(simps(grad[:i+1,:j+1,:k+1], z[:k+1], axis=2), y[:j+1], axis=1), x[:i+1], axis=0)

# The potential surface is stored in the 'potential' variable

相关问题