이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

alignsignals

더 빠른 신호를 지연시켜 두 신호 정렬

구문

[Xa,Ya] = alignsignals(X,Y)
[Xa,Ya] = alignsignals(X,Y,maxlag)
[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')
[Xa,Ya,D] = alignsignals(___)

설명

예제

[Xa,Ya] = alignsignals(X,Y)는 두 입력 신호 XY 간의 지연 D를 추정하고, 정렬된 신호 XaYa를 반환합니다.

  • YX보다 지연된 경우 D는 양수가 되고 X는 D개 샘플만큼 지연됩니다.

  • YX보다 선행한 경우 D는 음수가 되고 Y는 –D개 샘플만큼 지연됩니다.

X 또는 Y에 대한 지연은 앞에 0을 추가하여 발생시킬 수 있습니다.

예제

[Xa,Ya] = alignsignals(X,Y,maxlag)maxlag를 최대 윈도우 크기로 사용하여 두 입력 신호 XY 간의 지연 추정값 D를 찾습니다. 그런 다음 정렬된 신호 XaYa를 반환합니다.

예제

[Xa,Ya] = alignsignals(X,Y,maxlag,'truncate')는 정렬된 신호 XaYa의 길이를 입력 신호 XY의 길이와 각각 동일하게 유지합니다.

  • 지연 추정값 D가 양수이면, D개의 0이 X 앞에 추가되고 X의 마지막 D개 샘플이 잘립니다.

  • 지연 추정값 D가 음수이면, –D개의 0이 Y 앞에 추가되고 Y의 마지막 –D개 샘플이 잘립니다.

참고

XY는 길이가 각각 LX와 LY인 행 벡터 또는 열 벡터입니다.

  • D ≥ LX이면 Xa는 LX개의 0으로 구성됩니다. X의 모든 샘플은 손실됩니다.

  • –D ≥ LY이면 Ya는 LY개의 0으로 구성됩니다. Y의 모든 샘플은 손실됩니다.

'truncate' 옵션을 사용할 때 특정 값을 maxlag에 할당하지 않도록 하려면 maxlag[]로 설정하십시오.

예제

[Xa,Ya,D] = alignsignals(___)는 지연 추정값 D를 반환합니다. 이 구문은 위에 열거한 구문에 사용된 어떤 입력 인수도 포함할 수 있습니다.

예제

모두 축소

신호 Y를 3개 샘플만큼 밀어 신호 X에 맞게 정렬합니다.

두 신호 XY를 생성합니다. X가 앞에 3개의 0이 있고 뒤에 0이 하나 더 있다는 점을 제외하면 XY는 완전히 동일합니다. 두 신호를 정렬합니다.

X = [0 0 0 1 2 3 0 0];
Y = [1 2 3 0];

[Xa,Ya] = alignsignals(X,Y)
Xa = 1×8

     0     0     0     1     2     3     0     0

Ya = 1×7

     0     0     0     1     2     3     0

신호 Y가 신호 X에 비해 2개 샘플만큼 지연된 경우 신호 X를 정렬합니다.

두 신호 XY를 생성합니다. Y가 앞에 2개의 0이 있다는 점을 제외하면 XY는 완전히 동일합니다. 두 신호를 정렬합니다.

X = [1 2 3];
Y = [0 0 1 2 3];
maxlag = 2;

[Xa,Ya,D] = alignsignals(X,Y,maxlag)
Xa = 1×5

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 2

신호 X에 대해 신호 Y를 정렬합니다(여기서 Y는 잡음이 있는 신호임).

두 신호 XY를 생성합니다. Y는 잡음이 추가되었다는 점을 제외하면 X와 완전히 동일합니다. 두 신호를 정렬합니다.

X = [0 0 1 2 3 0];
Y = [0.02 0.12 1.08 2.21 2.95 -0.09];

[Xa,Ya,D] = alignsignals(X,Y)
Xa = 1×6

     0     0     1     2     3     0

Ya = 1×6

    0.0200    0.1200    1.0800    2.2100    2.9500   -0.0900

D = 0

출력 신호를 생성하기 위해 입력 신호를 변경할 필요는 없습니다. 지연 D는 0입니다.

alignsignals 함수를 호출할 때 'truncate' 옵션을 불러옵니다.

두 신호 XY를 생성합니다. Y가 앞에 2개의 0이 있다는 점을 제외하면 XY는 완전히 동일합니다. 'truncate' 옵션을 적용하여 두 신호를 정렬합니다.

X = [1 2 3];
Y = [0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 2

출력 신호 Xa의 길이가 입력 신호 X의 길이와 동일하게 3임을 알 수 있습니다.

'truncate' 옵션을 사용할 때 X의 원래 데이터를 모두 잘려지게 되는 경우 경고가 발생합니다. alignsignals에서 이러한 경고가 발생되는 것을 보려면 다음 예제를 실행하십시오.

Y = [0 0 0 0 1 2 3];

[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')
Warning: All original data in the first input X has been truncated because the length of X is smaller than the estimated delay D: to avoid truncating this data do not use the 'truncate' option.
Xa = 1×3

     0     0     0

Ya = 1×7

     0     0     0     0     1     2     3

D = 4

신호 X에 대해 신호 Y를 정렬합니다. 여기서 YX가 주기적으로 반복되는 신호입니다. 가능한 한 가장 작은 지연값이 반환됩니다.

두 신호 XY를 생성합니다. YX의 0이 아닌 부분에 대한 복사본 2개가 0으로 구분되어 있습니다. 두 신호를 정렬합니다.

X = [0 1 2 3];
Y = [1 2 3 0 0 0 0 1 2 3 0 0];

[Xa,Ya,D] = alignsignals(X,Y)
Xa = 1×4

     0     1     2     3

Ya = 1×13

     0     1     2     3     0     0     0     0     1     2     3     0     0

D = -1

입력 인수

모두 축소

첫 번째 입력 신호로, 길이가 LX인 숫자형 벡터로 지정됩니다.

예: [1 2 3]

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부:

두 번째 입력 신호로, 길이가 LY인 숫자형 벡터로 지정됩니다.

예: [0 0 1 2 3]

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
복소수 지원 여부:

최대 윈도우 크기 또는 지연값으로, 정수 값 스칼라로 지정됩니다. 기본적으로 maxlagmax(length(X),length(Y))-1과 같습니다. maxlag의 값이 []로 입력된 경우, 디폴트 값으로 대체됩니다. maxlag가 음수인 경우 절댓값으로 대체됩니다. maxlag가 정수 값이 아니거나 복소수, Inf 또는 NaN이면 alignsignals는 오류를 반환합니다.

예: 2

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

정렬된 첫 번째 신호로, 두 번째 출력 인수 Ya에 맞춰 정렬된 숫자형 벡터로 반환됩니다. 입력 인수 X가 행 벡터이면 Xa도 행 벡터가 됩니다. 입력 인수 X가 열 벡터이면 Xa도 열 벡터가 됩니다. 'truncate' 옵션을 지정할 경우 지연 추정값 D가 양수이면, Xa는 입력 신호 X에서 D개의 0이 앞에 추가되고 마지막 D개의 샘플이 잘린 것과 동일합니다.

정렬된 두 번째 신호로, 첫 번째 출력 인수 Xa에 맞춰 정렬된 숫자형 벡터로 반환됩니다. 입력 인수 Y가 행 벡터이면 Ya도 행 벡터가 됩니다. 입력 인수 Y가 열 벡터이면 Ya도 열 벡터가 됩니다. 'truncate' 옵션을 지정할 경우 지연 추정값 D가 음수이면, Ya는 입력 신호 Y에서 –D개의 0이 앞에 추가되고 마지막 –D개의 샘플이 잘린 것과 동일합니다.

입력 신호 간의 지연 추정값으로, 정수 스칼라로 반환됩니다. 이 정수는 두 입력 신호 XY 간의 오프셋에 해당하는 샘플 개수를 나타냅니다.

  • YX보다 지연된 경우 D는 양수가 되고 XD개 샘플만큼 지연됩니다.

  • YX보다 선행한 경우 D는 음수가 되고 Y는 –D개 샘플만큼 지연됩니다.

  • XY가 이미 정렬된 상태이면 D는 0이 되고 XY 모두 지연되지 않습니다.

입력 인수 maxlag의 값을 지정할 경우, Dmaxlag보다 작거나 같아야 합니다.

알고리즘

  • finddelay 함수 사양에서 지연 추정값에 대한 이론을 찾을 수 있습니다(알고리즘 참조).

  • alignsignals 함수는 두 신호가 동일한 시작점을 갖도록, 지연 추정값 D를 사용하여 둘 중 더 빠른 신호를 지연시킵니다.

  • finddelay 함수에서 명시된 것처럼, 신호 쌍은 서로 정확하게 동일한 지연 신호일 필요는 없습니다. 그러나 두 신호 간에 충분한 상관관계가 있는 경우에만 신호를 제대로 정렬할 수 있습니다.

공분산과 상관관계 함수의 추정에 대한 자세한 내용은 [1] 항목을 참조하십시오.

참고 문헌

[1] Orfanidis, Sophocles J. Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

참고 항목

| | | |