2013-01-01 2 views
1

포인트 (x, Y, Z)로 특징 지어지는 2 차원 격자의 데이터가 있습니다. X와 Y 값은 각 점의 위치를 ​​나타내며 Z는 각 점에서 "높이"또는 "강도"입니다.파이썬 - 데이터 라인 보간

내 문제는 X 축의 데이터 좌표가 극히 근접하여 (~ 1000 포인트) Y 좌표가 펼쳐지는 (~ 50 포인트) 점입니다. 즉, 산점도에 그릴 때 필연적으로 이웃 한 선 사이에 같은 양의 공백이있는 데이터 행이 있습니다. 내 데이터는 산포도에 간격 방법의

예 :

ooooooooooooooooooooooooooooooo 


ooooooooooooooooooooooooooooooo 


ooooooooooooooooooooooooooooooo 

나는 연속 표면을 얻기 위해 이러한 점을 보간합니다. 나는이 표면의 어떤 위치에서도 "높이"를 평가할 수 있기를 원합니다. 나는 모든 scipy 보간법처럼 보이고 가장 지능적인 방법이 무엇인지 확신 할 수 없다. 데이터의 각 수직 조각을 보간해야하나요?

최대한 표면을 매끄럽게하고 싶지만 모양을 유지하는 방법이 필요합니다. 보간 된 서페이스에서 입력 데이터를 오버 슛하지 않기를 바랍니다.

제공 할 수있는 도움이 있으면 도움이 될 것입니다.

편집 : 좀 더 문제에 대해 생각할

, 함께 바느질 한 후 수직 조각을 보간하고하는 것은 작동하지 않을 것 같다. 그러면 수직 슬라이스의 값이 해당 슬라이스에만 영향을 미치므로 결과적으로 부정확 한 표면이 생길 수 있습니까?

+0

'오버 슛'이란 무엇입니까? –

+0

당신은 이것을 소트 시켰습니까? – tacaswell

답변

0

표면을 찾고 있다면, 내 생각에 수직 슬라이스를 사용하고 채워진 데이터를 플로팅 할 수 있습니다.

3

나는이 tutorial을 권장합니다. 그것의 내장은 (링크에서 해제)됩니다

>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j] 
>>> from scipy.interpolate import griddata 
>>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest') 
>>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear') 
>>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic') 

당신에게 당신의 데이터 (doc)의 보간의 세 가지 수준을 얻을 것이다있다.

+0

링크를 제공해 주셔서 감사합니다. 이것은 실제로 내가 구현하고있는 많은 메소드 중 하나입니다. 입방체는 입력 데이터를 초과하기 때문에 질문에서 벗어났습니다. 선형 보간은 잘 맞지 않는 것처럼 보이지만 선택 사항입니다. – user1764386

+0

그 페이지에서 더 아래쪽으로 스플라인 피팅을 보았습니까? 나는 1D 스플라인이 시끄러운 데이터에서 잘 작동하는 것을 발견했습니다. 데이터를 부드럽게 할 수 있습니까? (데이터의 2 차 미분의 변동으로 인한 오버 슈팅에 도움이됩니다). – tacaswell