2014-08-30 4 views
0

1D 배열 (예 : XYData)이 있습니다.메모리 유효 PHP로 선형 보간

$TE = array(
     "1"=>"20", 
     "2"=>"30", 
     "5"=>"50", 
     "10"=>"90" 
    ) 

전달 된 X 값의 선형 보간을 수행하고 해당 Y 값을 반환하는 메모리 효율적인 PHP 함수를 만들고 싶습니다. 예 :

function interpolate($TE,9.5) 다음은 86

를 반환해야 호출하면 매우 긴 될 수있는 XYData 세트로 배열 검색을 피하기 위해 어떤 방법이 있나요, 더 후 100 점들은 말한다.

미리 감사드립니다.

+2

2 차원 배열처럼 보이지는 않습니다. 이것은 비선형 투영이므로 1 차원, 키/값 쌍입니다. 회귀를 사용해야합니다. 중간 값을 계산하십시오. –

+0

예. 이것은 1D 배열이어야합니다. – mankaho1987

+0

http://blog.creativum.nl/2011/09/linear-interpolation-with-php/ –

답변

0

아니요, 배열을 보지 않아도됩니다. 보다 효율적으로 사용하려면 데이터를 재구성해야합니다. 재귀 적으로 중간을 찾은 다음이 지점에서 두 부분으로 나눕니다.

$TER = array("2 and lower" => array("1" => "20", 
            "2" => "30"), 
      "5 and higher" => array("5" => "50", 
            "8" => "100")); 

없음 재귀가 표시되지 않습니다, 그것은 정말 데이터의 같은 작은 세트에 대한 이해가 없지만, 데이터 세트가 커지면 분명한 이점이있다 : 당신의 짧은 예를 들어, 당신은이를 얻을 것입니다. 그것은 기본적으로 간단한 이진 검색 트리입니다.

하지만이 경우 구현하는 것이 바람직 할 것입니다. 나는 그것을 전부 다 사용하지 않을 것이고, 당신은 정말로 이것을 유용하게 만들기 위해서 100.000 이상의 아이템을 가져야 만합니다. 그렇지 않다면 배열을 통해 작업하십시오.