1

我有一组向量,我想用它们创建一个具有特定分辨率的向量场。我的向量由它们的 x,y 位置以及它们的长度和角度定义。

import numpy as np
import scipy as sp
from matplotlib.mlab import griddata
import pylab as pl

theta_array = [3,5,7,1]
length_array = [4,6,7,8]
x_array = [4,7,8,9]
y_array = [7,3,5,8]

x = np.linspace(1,10,10)
y = np.linspace(1,10,10)

new_theta = griddata(x_array,y_array,theta_array,x,y,interp='linear')
new_length = griddata(x_array,y_array,length_array,x,y,interp='linear')

我想(10x10)从这些向量的插值中创建一个向量场。以上是我griddata从 matplotlib 中使用的。

虽然它返回一个具有内插值的 10x10 数组,但它只会--为其他数组元素创建一个数据和值的孤岛。

masked_array(data =
 [[-- -- -- -- -- -- -- -- -- --]
 [-- -- -- -- -- -- -- -- -- --]
 [-- -- -- -- -- -- 5.0 -- -- --]
 [-- -- -- -- -- -- 5.4 -- -- --]
 [-- -- -- -- -- 4.6 5.8 7.0 -- --]
 [-- -- -- -- 3.8 5.0 5.0 5.0 -- --]
 [-- -- -- 3.0 3.0 3.0 3.0 3.0 -- --]
 [-- -- -- -- -- -- -- -- 1.0 --]
 [-- -- -- -- -- -- -- -- -- --]
 [-- -- -- -- -- -- -- -- -- --]],
             mask =
 [[ True  True  True  True  True  True  True  True  True  True]
 [ True  True  True  True  True  True  True  True  True  True]
 [ True  True  True  True  True  True False  True  True  True]
 [ True  True  True  True  True  True False  True  True  True]
 [ True  True  True  True  True False False False  True  True]
 [ True  True  True  True False False False False  True  True]
 [ True  True  True False False False False False  True  True]
 [ True  True  True  True  True  True  True  True False  True]
 [ True  True  True  True  True  True  True  True  True  True]
 [ True  True  True  True  True  True  True  True  True  True]],
       fill_value = 1e+20)

我本来希望所有元素都有值,随着它远离具有值的元素,它的值会逐渐消失/减少。很像这样:

旋转矢量场

对此的后续问题是如何将其应用于另一个图像并使用矢量场对其进行变形?

非常感谢!

4

0 回答 0