Hướng dẫn interpolate between two 3d points python - nội suy giữa hai điểm 3d python

Tôi có vấn đề với nội suy các điểm dữ liệu 3D trong Python. Tôi có cấu trúc dữ liệu đơn giản như thế này:

class Point[ object ]:
def __init__[ self, x, y, z, data ]:
    self.x, self.y, self.z = x, y, z
    self.data = data

X, Y, Z là tọa độ trong không gian 3D Cartesian, dữ liệu là giá trị vô hướng tại thời điểm này.

Tôi đã thử phương pháp được hiển thị ở đây: Nội suy/Subpling của dữ liệu 3D trong Python không có VTK, nhưng tôi có vấn đề để nó hoạt động chính xác.

Bạn có thể nội suy hai trục một cách độc lập như:

Mã số

def find_xy[p1, p2, z]:

    x1, y1, z1 = p1
    x2, y2, z2 = p2
    if z2 < z1:
        return find_xy[p2, p1, z]

    x = np.interp[z, [z1, z2], [x1, x2]]
    y = np.interp[z, [z1, z2], [y1, y2]]

    return x, y

Mã kiểm tra:

import numpy as np

# arbitrary z
z1, x1, y1 = 0.822, 174269.8332, 608470.8717
z2, x2, y2 = 0.692, 174269.5191, 608480.8668

print[find_xy[[x1, y1, z1], [x2, y2, z2], .7]]
print[find_xy[[x1, y1, z1], [x2, y2, z2], .8]]

# z = 0
z1, x1, y1 = 0.022, 174267.9486, 608530.8421
z2, x2, y2 = -0.262, 174267.6345, 608540.8372

print[find_xy[[x1, y1, z1], [x2, y2, z2], 0]]

Results:

[174269.53842923077, 608480.2517169231]
[174269.78004461539, 608472.5631784615]

[174267.92426830987, 608531.6163683098]

scipy.interpolate.interp[1D, 2D, 3D]

Trong bài viết này, chúng tôi sẽ khám phá cách thực hiện phép nội suy trong Python, sử dụng thư viện SCIPY.

SCIPY cung cấp rất nhiều chức năng hữu ích cho phép xử lý toán học và tối ưu hóa phân tích dữ liệu. Cụ thể hơn, nói về dữ liệu nội suy, nó cung cấp một số chức năng hữu ích để có được phép nội suy nhanh chóng và chính xác, bắt đầu từ một tập hợp các điểm dữ liệu đã biết. Trong văn bản sau, chúng tôi sẽ phân tích ba kịch bản nội suy khác nhau; nội suy một chiều nội suy hai và ba chiều.mathematical processing and optimization of the data analysis. More specifically, speaking about interpolating data, it provides some useful functions for obtaining a rapid and accurate interpolation, starting from a set of known data points. In the following text, we will analyze three different interpolation scenarios; one-dimensional interpolation two and three-dimensional interpolation.

Các chức năng sẽ được sử dụng trong đoạn mã được lấy từ thư viện

def find_xy[p1, p2, z]:

    x1, y1, z1 = p1
    x2, y2, z2 = p2
    if z2 < z1:
        return find_xy[p2, p1, z]

    x = np.interp[z, [z1, z2], [x1, x2]]
    y = np.interp[z, [z1, z2], [y1, y2]]

    return x, y
8 và lần lượt là:
def find_xy[p1, p2, z]:

    x1, y1, z1 = p1
    x2, y2, z2 = p2
    if z2 < z1:
        return find_xy[p2, p1, z]

    x = np.interp[z, [z1, z2], [x1, x2]]
    y = np.interp[z, [z1, z2], [y1, y2]]

    return x, y
9,
import numpy as np

# arbitrary z
z1, x1, y1 = 0.822, 174269.8332, 608470.8717
z2, x2, y2 = 0.692, 174269.5191, 608480.8668

print[find_xy[[x1, y1, z1], [x2, y2, z2], .7]]
print[find_xy[[x1, y1, z1], [x2, y2, z2], .8]]

# z = 0
z1, x1, y1 = 0.022, 174267.9486, 608530.8421
z2, x2, y2 = -0.262, 174267.6345, 608540.8372

print[find_xy[[x1, y1, z1], [x2, y2, z2], 0]]
0 và
import numpy as np

# arbitrary z
z1, x1, y1 = 0.822, 174269.8332, 608470.8717
z2, x2, y2 = 0.692, 174269.5191, 608480.8668

print[find_xy[[x1, y1, z1], [x2, y2, z2], .7]]
print[find_xy[[x1, y1, z1], [x2, y2, z2], .8]]

# z = 0
z1, x1, y1 = 0.022, 174267.9486, 608530.8421
z2, x2, y2 = -0.262, 174267.6345, 608540.8372

print[find_xy[[x1, y1, z1], [x2, y2, z2], 0]]
1.

Nội suy gì?

Từ quan điểm toán học, phép nội suy cho biết quá trình thu được giá trị của các điểm dữ liệu chưa biết cụ thể nằm giữa một số điểm dữ liệu đã biết khác, sau khi đã mô tả tập hợp các điểm dữ liệu đã biết với hàm cơ hội.

Ví dụ: nếu chúng ta có một loạt các điểm dữ liệu x0, x1, x2, thì xn xn và chúng ta biết các giá trị y0, y1, y2, Hồi yn [với yn = f [xn]], thông qua quá trình nội suy, chúng ta có thể Xác định giá trị ym = f [xm], trong đó xm là một điểm nằm ở giữa hai trong số các điểm đã biết, tức là & nbsp; Khi x0

Bài Viết Liên Quan

Chủ Đề