2011-08-15 4 views
6

나는 2048x2048 메쉬의 불규칙한 데이터 zi = f(xi, yi)을 가지고 있으며, 본질적으로 세 개의 2048 개의 실수 값 세트입니다. I는 0에서 2047대형 격자를 일반 격자에 2D 보간

내가 1000x1000 이하의 이미지를 잘 작동하는 것 같다 griddata을 시도

하지만 불면에 있습니다 원활 wi = f(ui, vi)uivi의 일반 메쉬에 그 (아마도 바이 큐빅 스플라인)를 보간하는 정수 값이 필요합니다 당신이 1500x1500 (Delauney Mesh에 대한 메모리 qhull 오류가 분명히 있음)까지 올라간다. geometric_transform, RectBivariateSplinemap_coordinates과 같은 일부 기능을 살펴 보았지만 정규화 된 데이터는 입력으로 간주됩니다. 나는 뭔가를 놓칠 수 있고 그것을 잘못 구현할 수도 있습니다!

tformarraymakeresampler을 사용하여이 Matlab 스크립트를 수행하기 위해 Python/SciPy를 사용하려고합니다. 이 큰 데이터 세트를 처리하는 데 사용할 수있는 기능에 대한 제안 사항은 무엇입니까? 감사!

+4

나는이 질문을 보았습니다. http://stackoverflow.com/questions/1972172/interpolating-a-scalar-field-in-a-3d-space 성공하기 전에 셰퍼드 보간을 사용했습니다. 당신을 위해 일합니다. – Yann

답변

2

오류없이 재현하려고했습니다. 32 비트 시스템에 있습니까? 나는 scipy/numpy와 큰 배열에 문제가있어서 64 비트로 바뀌었고 그 이후로 아무런 문제가 없었다.

여기에 내가 당신의 오류를 재현하려고하는 데 사용되는 코드입니다 (유용 아무것도 생성되지 않습니다,하지만 적어도 같은 오류가 발생한다) :

y,x=indices([2048,2048],dtype='float64') 
z = randn(2048,2048) 
yr = y + randn(2048,2048) 
xr = x + randn(2048,2048) 
zn = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y) 
zl = griddata(xr.ravel(),yr.ravel(),z.ravel(),x,y,interp='linear') 

이 내 컴퓨터에서 작동합니다.

64 비트 버전의 Python을 실행할 수 없다면 (사용하는 OS에 따라 어려울 수 있음) 2048x2048 격자를 4 개의 1024x1024 격자로 나눌 수 있습니까?

+0

griddata()를 실행하려면 입력 포인트와 출력 포인트를 각각 튜플로 변환해야했습니다. 2011 년 12 인치 Macbook에서 코드가 1024x1024에서 33 초, 2048x2048에서 184 초 –

+0

코드가 작동하지 않습니다. import를 제외하고는, griddata() 입력을'(xr.ravel(), yr.ravel()) '과 같은 출력으로 묶어야합니다.'(x, y)' –