2012-12-22 6 views
3

저는 파이썬 2.7을 사용하여 프로그램을 작성 중이며 직사각형 데이터를 보간/삽입하는 가장 좋은 방법을 정확히 찾아내는 데 어려움을 겪고 있습니다.Python - 2D 직사각형 데이터 피팅

저는 z = f (x, y) 형식의 알려진 데이터 묶음을 가지고 있습니다. 여기서 x와 y는 그리드에 고르게 배치되어 있습니다. 나의 x 포인트는 0에서 100까지의 범위에서 0.1 씩 증가합니다. 내 y 포인트 범위는 0에서 100까지 2 씩 증가합니다.

이 데이터를 보간하거나 피팅 할 때 내 문제는 내 y 데이터 좌표 사이의 큰 간격입니다. 나는 (X, Y) 좌표 쌍에 대한 높이 Z를 평가할 수 있도록이 데이터를 맞추는 가장 좋은 방법을 찾고있다. 나는 결과물 표면을 가능한 한 매끄럽게하기를 원한다. griddata 또는 rectbivariatespline을 사용하는 일반적인 방법은 매끄러운 표면을 생성하지 않습니다. 내 y 점 사이의 공간이 x 점 사이의 공간보다 훨씬 크기 때문입니다.

내가 선택한 한 가지 옵션은 polyfit (또는 비슷한 것을 사용하여 각 슬라이스에 다항식을 적용한 다음 각 슬라이스를 서로 보간하여 부드러운 표면을 생성하는 것입니다. 이것은 일을하는 일종의 우회 길처럼 보입니다. 그게 최선의 선택입니까? 다항식에 조각을 끼워 맞추는

예 (고정 X의 Z ​​대 Y) 다항식에 fitting data

맞으면, 슬라이스 내 각각 대략 정규 또는 바이 모달이다. 그것들은 상당히 단순한 배포판입니다.

제 목표는 3D 또는 pcolor 스타일 차트로 표시하기 위해 매끄럽고 밀착 된 서페이스를 생성하는 것입니다. 나는 Zmax와 Zmin을 지나서 스윙을 피할 필요가있다. 스플라인을 사용할 때 이것이 문제라는 것을 알고 있습니다.

내 목표 : goal surface

당신이 제공 할 수있는 모든 도움을 주셔서 감사합니다. 나는이 글을주의 깊게 보며 정교함이 필요하면 빨리 대응할 것입니다.

편집 : 내가 무엇을 찾고 있어요 것은 2D 데이터를위한 파이썬 보간 방법을 보존 모양처럼 내가 읽은 내용에서

, 그것은 보인다. 난 matlab에 대한 pchip의 라인을 따라 뭔가가 필요하지만, 표면. 나는 모든 문서를 살펴 보았고 모양이 부드럽게 유지되는 모양을 찾을 수 없습니다. griddata, 또는 rectbivariatespline를 사용하여

+0

저는 책상에서 떨어져 있지만 정규화 된 스플라인 보간 방법이 있다고 생각합니다. 들여다 볼 가치가 있습니다. – YXD

+0

[map_coordinates] (http://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.interpolation.map_coordinates.html)를 사용해 보셨습니까? – tiago

답변

2

기존의 방법은 더 이 부드러운 표면을 생성하지 않음 - 내 Y 점 사이의 공간 내 X 점 "당신은 확장 시도해야

사이의 공간보다 훨씬 큰 겉으로 때문에 귀하의 y- 좌표를 적절하게 --- 최소한 griddata는 유클리드 메트릭을 가정합니다. 즉, 모든 치수의 길이 스케일이 비슷합니다.

다른 모양 유지 보간을 원한다면 내 대답 here 그러나, 그런 보간법은 어떤 스무딩도하지 않으므로 어쩌면 이것이 당신이 원하는 것일 수는 없습니다.

+0

형상 보존 솔루션을 제공해 주셔서 감사합니다. 나는 오늘 오후에 그것을 시행하려고 시도 할 것이다. pchip 메서드가 평활화를 수행하지 않는다고 말하면 선형 보간보다 정확한 표면을 생성합니다 - 정확합니까? 봉우리가 들쭉날쭉 한 점 대신에 둥글게 될 것이기 때문에? 이것이 내가 읽는 것으로부터 수집 한 것입니다. http://en.wikipedia.org/wiki/Cubic_Hermite_spline#Interpolating_a_data_set – user1764386

+0

예, IIRC에서는 연속 파생물이있는 서페이스를 생성하지만 모든 데이터 요소를 통해 보간됩니다 . –

0

당신은 내 BSD 라이선스 NumPy와 시도하고 기반 곡선을 scipy 및 Google 코드 저장소에서 피팅 라이브러리를 표면 수 있습니다

http://code.google.com/p/pyeq2/downloads/list

그것은 성능을 위해 파이썬 병렬 프로그래밍 등 많은 사례가 있습니다. 그것이 무료이기 때문에, 그것을 시험해 볼 아무 것도 들지 않을 것입니다.

제임스

관련 문제