2017-10-03 4 views
1

새 커브를 중간에 삽입하려고 시도한 커브가있는 차트가 있습니다. y = ((x - x1) (y2 - y1)/(x2 - x1)) + y1의 형태로 선형 보간을 사용했지만, 새로운 곡선은 제자리를 찾지 못합니다.기존 커브 사이에 보간 된 커브가 올바르게 표시되지 않습니다.

두 번째 줄 (하단에서부터)이 보간 된 줄임을 그림에서 볼 수 있습니다. 매우 두 번째 라인 데이터 포인트가 y 축의 첫 번째 데이터 포인트와 세 번째 데이터 포인트의 중앙에 정확하게 위치하는 동안 세 번째 라인 데이터 포인트는 두 번째 및 네 번째 y 데이터 포인트 사이의 중심에 있지 않으므로 그래프가 왜곡되어 보입니다.

그래서 선형 보간이 내가 여기에있는 것일 수는 없다고 생각합니다. 누군가 기존의 것 사이에 커브를 만들지 만 같은 양식을 복제하는 다른 방법을 추천 할 수 있습니까? 구배

enter image description here

답변

1

급격한 변화는 보간하기 어렵다. 보간 된 선이 갑자기 그라디언트를 변경하기를 원할 때 가까운 위치에있는 점으로부터 그라디언트가 갑자기 변하는 위치에 대한 정보를 제공하는 정보는 없습니다.

패턴을 복제하려면 실제로 아래 라인의 그래디언트를 복사 한 다음 위 라인의 그래디언트로 부드럽게 전환해야합니다. 시각적으로 볼 때 위아래 선의 그라디언트 변화 사이의 중간에 위치해야한다는 것을 알 수 있지만 그 위치를 감지하는 것은 쉽지 않습니다.

갑자기 기울기 변화가 발생하는 지점은 y 축의 작은 변화만으로 x 축의 큰 변화로 구분됩니다. 그라디언트의 변화 사이의 x 값에 대한 y 값을 계산할 때 수차가 발생합니다. 대신 y 값을 기반으로 x 값을 보간하는 것이 좋습니다. 각 커브에 대해 y 축의 작은 임의 단계에 대해 양쪽에서 커브의 가장 가까운 x 값을 찾고 계산하고 보간을 플롯하기 위해 평균을 취합니다.

+0

y 값에서 x 값을 보간했지만 결과가 비슷합니다. 나는 쌍 선형 보간을위한 과정을 가지고있다. 그러나 그것은 꽤 복잡하고 동일한 결과를 산출한다면 작업 시간을 낭비하고 싶지 않다. bilinear가 비슷한 지 알고 있습니까? –

+0

저는 보간에 대한 전문가가 아니므로, 얼마나 더 가깝게 미안하다고 말할 수는 없습니다. 나는 이것들이 잘 행동하는 곡선이 아니라는 것을 알고 있습니다 ...그들은 우리가 육안으로 쉽게 알아볼 수있는 꼬임이있는 직선이지만, 꼬임들 사이에 즉각적인 주변 지점은 꼬임이 발생해야하는 곳을 나타내지 않습니다. 원하는 레벨의 보간은 주변 꼬임의 위치와 모양을 통합해야하며이 정보를 모델링에 통합하는 방법을 알지 못합니다. – Michael

0

틀에 얽매이지 않는 접근 방식은 조각 식사 스타일의 보간이 될 수 있습니다. 서로 다른 그라디언트의 3 개의 영역을 따로 모델링하는 것이 가능할 수 있습니다.

3 개의 공간 영역을 생성하여 2 세트의 꼬임을 통해 그려지는 2 줄을 식별함으로써 시작하십시오. 수직선은 그래프의 오른쪽 하단 모서리 근처의 수평선에서 멈 춥니 다.

각 영역에 대해 (그리고 각 영역의 x 값마다 잠재적으로) 선의 그라디언트를 결정하십시오. 새로운 선을 보간 할 때, 각 시작점 (x1, y1)에 대해 어느 지역에 속하는지 살펴보십시오. 다음 점을 결정할 때 중요한 요소로 해당 지역의 그래디언트를 사용하십시오. 지역 경계에 도달 할 때까지 계속하십시오. 보간 된 점이 다른 영역과 교차 할 때 그 영역의 그래디언트를 중요한 점으로 사용하여 다음 점을 보간합니다.

이 작업을 엄격하게 수행하면 그래프가 부드럽게 처리됩니다 (또는 영역 간 전환시 그라디언트의 가중치 평균을 사용하여 평활화 인수를 통합 할 수도 있지만, 반드시 가까운 거리를 두지 않고도 많은 노력을 기울일 수 있음). 결과!)