Hướng dẫn 4d interpolation python - Python nội suy 4d

Vì vậy, tôi có trường lực 4D như trong x yz với Force được gắn vào mỗi điểm.

Tôi hơi lạc lõng về cách nội suy điều này, tôi đã bắt gặp điều này.

http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.ndimage.interpolation.map_coordinates.html

Có vẻ như tôi có thể tạo ra một mảng

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
0 và sau đó nội suy nó nhưng tôi thực sự không quá chắc chắn.

Có ai biết bất kỳ thư viện tốt cho Python về cách làm điều này không?

Đầu vào ví dụ là:

x y z Force  
0 0 0 35  
0 0 1 32  
0 0 2 23  
...  
2 5 9 54  

Askewchan

43.6K17 Huy hiệu vàng113 Huy hiệu bạc132 Huy hiệu đồng17 gold badges113 silver badges132 bronze badges

Hỏi ngày 16 tháng 10 năm 2013 lúc 16:43Oct 16, 2013 at 16:43

1

Cách bạn mô tả nó (x, y, z), đây là trường 3D, không phải 4D.

Mục đích của phép nội suy là chỉ định một trường (trong trường hợp này là Force) tại bất kỳ điểm nào (x, y, z) ngay cả khi bạn không có lực, chính xác là điểm đó (x, y, z). Thay vào đó, bạn có lực lượng tại một số điểm gần đó và bạn nội suy chúng để có được một lực có ý nghĩa tại điểm (x, y, z). Trong 3D, bạn sẽ cần một thuật toán nội suy song tuyến ít nhất, và mã hóa nó lên (và giữ các chỉ số theo thứ tự) là không tầm thường.

Trong Python, bạn có thể sử dụng các thói quen nội suy của SCIPY.

Đã trả lời ngày 16 tháng 10 năm 2013 lúc 17:05Oct 16, 2013 at 17:05

Hướng dẫn 4d interpolation python - Python nội suy 4d

MaxmaxMax

3.3442 Huy hiệu vàng26 Huy hiệu bạc25 Huy hiệu Đồng2 gold badges26 silver badges25 bronze badges

4

Vì vậy, nếu tôi hiểu bạn Corret, bạn có lực lượng được đưa ra tại một số điểm và những người khác không và muốn đưa ra một phép nội suy? Tại NMR, việc sử dụng phép nội suy tuyến tính cho đến khi được cập nhật. Thay vào đó, bạn có thể thử SPLINE, nhưng điều đó tốn kém hơn. Nhưng nó chủ yếu phụ thuộc vào loại lực lượng của bạn - nó sẽ thay đổi nhanh như thế nào? Xây dựng nội suy Rouinte của bạn ra khỏi đó.

Đã trả lời ngày 16 tháng 10 năm 2013 lúc 17:23Oct 16, 2013 at 17:23

user2003965user2003965user2003965

4738 Huy hiệu bạc19 Huy hiệu đồng8 silver badges19 bronze badges

chỉnh sửa trang này

Bật bảng nội dung thanh bên

Ghi chú

Nhấn vào đây để tải xuống mã ví dụ đầy đủ hoặc để chạy ví dụ này trong trình duyệt của bạn thông qua Binderhere to download the full example code or to run this example in your browser via Binder

Nội suy của một lưới thường xuyên bốn chiều.

Quadrivariate#

Nội suy

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
2 cho phép thu được các giá trị tại các điểm tùy ý trong không gian 4D của hàm được xác định trên lưới.

Phương pháp này thực hiện phép nội suy song tuyến trong không gian 2D bằng cách xem xét các trục kinh độ và vĩ độ của lưới, sau đó thực hiện phép nội suy tuyến tính ở kích thước thứ ba và thứ tư. Giao diện của nó tương tự như lớp

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
3 ngoại trừ trục thứ tư, được xử lý bởi đối tượng này.

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests

Bước đầu tiên là tải dữ liệu vào bộ nhớ và tạo đối tượng Interpolator:

ds = pyinterp.tests.load_grid4d()
interpolator = pyinterp.backends.xarray.Grid4D(ds.pressure)

Chúng tôi sẽ xây dựng một lưới mới sẽ được sử dụng để xây dựng một lưới nội suy mới.

Cảnh báo

Khi sử dụng trục thời gian, phải cẩn thận để sử dụng cùng một đơn vị ngày, giữa trục được xác định và ngày được cung cấp trong quá trình nội suy. Hàm

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
4 tự động hóa nhiệm vụ này và sẽ cảnh báo bạn nếu có sự không nhất quán trong quá trình chuyển đổi ngày.

mx, my, mz, mu = numpy.meshgrid(numpy.arange(-125, -70, 0.5),
                                numpy.arange(25, 50, 0.5),
                                numpy.datetime64('2000-01-01T12:00'),
                                0.5,
                                indexing='ij')

Chúng tôi nội suy lưới của chúng tôi bằng cách sử dụng

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
5:

Bicubic trên lưới 4D#

Lưới được sử dụng tổ chức các vĩ độ theo thứ tự giảm dần. Chúng tôi yêu cầu hàm tạo của chúng tôi lật trục này để đánh giá chính xác phép nội suy bicubic từ khối 4D này (chỉ cần thiết để thực hiện phép nội suy bicubic).

interpolator = pyinterp.backends.xarray.Grid4D(ds.pressure,
                                               increasing_axes=True)

Chúng tôi nội suy lưới của chúng tôi bằng cách sử dụng phép nội suy

import cartopy.crs
import matplotlib
import matplotlib.pyplot
import numpy

import pyinterp
import pyinterp.backends.xarray
import pyinterp.tests
6 trong không gian, sau đó là một nội suy tuyến tính trong trục thời gian:

Chúng tôi biến đổi kết quả của chúng tôi thành một ma trận.

Hãy để hình dung kết quả của chúng tôi.

Ghi chú

Nhấn vào đây để tải xuống mã ví dụ đầy đủ hoặc để chạy ví dụ này trong trình duyệt của bạn thông qua BinderFill NaN values to see how to address this issue.

fig = matplotlib.pyplot.figure(figsize=(5, 4))
ax1 = fig.add_subplot(
    211, projection=cartopy.crs.PlateCarree(central_longitude=180))
pcm = ax1.pcolormesh(lons,
                     lats,
                     quadrivariate.T,
                     cmap='jet',
                     shading='auto',
                     transform=cartopy.crs.PlateCarree())
ax1.coastlines()
ax1.set_title('Trilinear')

ax2 = fig.add_subplot(
    212, projection=cartopy.crs.PlateCarree(central_longitude=180))
pcm = ax2.pcolormesh(lons,
                     lats,
                     bicubic.T,
                     cmap='jet',
                     shading='auto',
                     transform=cartopy.crs.PlateCarree())
ax2.coastlines()
ax2.set_title('Spline & Linear in time')
fig.colorbar(pcm, ax=[ax1, ax2], shrink=0.8)
fig.show()

Hướng dẫn 4d interpolation python - Python nội suy 4d

Tổng thời gian chạy của tập lệnh: (0 phút 1,001 giây) ( 0 minutes 1.001 seconds)

Phòng trưng bày được tạo ra bởi Sphinx-Gallery