2016-07-29 8 views
2

필자는 필자가 비교해야 할 길이가 다른 두 개의 배열 (다른 샘플링 속도로 인해)이 있습니다. 나는 더 작은 배열을 길이에 맞추기 위해 더 큰 배열을 다운 샘플링하고 싶지만, 그 인자는 정수가 아니라 십진수이다. 예를 들어MATLAB : 길이가 다른 두 배열 비교

:

a = 
    1  1.375  1.75  2.125  2.5  2.875  3.25 

b = 
    1  2  3 

은 길이에 맞게 이러한 배열을 조작 할 수있는 방법이 있습니까?

답변

2

interp1을 영리하게 사용하면 쉽게 처리 할 수 ​​있습니다. 요령은 보간에 사용되는 키포인트가 1에서 최대 값까지 배열하는 것입니다. aN이라고하며, 보간 된 키포인트는 첫 번째 점이 1이고 마지막 점이 선형으로 증가하는 배열입니다 포인트가 N이고이 범위를 균등하게 나눠서 b에있는 점수만큼 점수를 매기십시오.

은 간단히 말해 :

anew = interp1(1:numel(a), a, linspace(1, N, numel(b))); 

linspace 우리가 b 요소의 총 개수로 결정 당신이 원하는만큼의 포인트 N = numel(a)-1에서 선형 적으로 증가하는 배열을 생성합니다. 이 값은 b 길이와 일치하는 a의 다운 샘플링 된 버전을 제공하려는 올바른 키포인트를 정확하게 지정합니다. 그러나 약간의 보간이 필요합니다. 기본 보간 방법은 선형입니다. 당신이 제공 a에서 샘플 입력을 사용

, 우리가 얻을 :

>> anew 

anew = 

    1.0000 2.1250 3.2500 
+0

완벽한합니다. 고맙습니다 ** 레이린 **. – Bensa

+0

전혀 문제가 없습니다. 행운을 빕니다! – rayryeng