주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

alignsignals

R2026a

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

설명

[xa,ya,D] = alignsignals(x,y)는 두 입력 신호 x와 y 간의 지연 D를 추정하고, 정렬된 신호 xa 및 ya와 함께 D를 반환합니다. 이 함수는 상호상관을 사용하여 지연을 추정합니다.

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

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

입력 신호는 어느 한 쪽이 다른 쪽의 지연된 복제 신호일 필요는 없습니다. 그러나 두 신호 간에 충분한 상관관계가 있는 경우에만 신호를 정확히 정렬할 수 있습니다. 공분산과 상관의 추정에 대한 자세한 내용은 [1] 항목을 참조하십시오.

예제

[xa,ya,D] = alignsignals(x,y,Name=Value)는 하나 이상의 이름-값 인수를 사용하여 옵션을 지정해서 추정 방법과 입력 신호를 자르는 옵션을 포함시킬 수 있습니다. 예를 들어, 각 신호에서 최대 피크 위치를 기준으로 지연을 추정하려면 Method를 "maxpeak"로 설정하십시오.

예제

예제

모두 축소

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

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

두 신호 X와 Y를 생성합니다. Y가 2개 샘플만큼 지연된다는 점을 제외하면 Y와 X는 완전히 동일합니다. 두 신호를 정렬합니다.

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

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

     0     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 
2

최대 윈도우 크기 1을 사용하여 신호를 정렬합니다.

maxlag = 1;

[Xa,Ya,D] = alignsignals(X,Y,Method="xcorr",MaxLag=maxlag)
Xa = 1×4

     0     1     2     3

Ya = 1×5

     0     0     1     2     3

D = 
1

이진 파형을 나타내는 두 개의 신호를 생성합니다. 이 신호는 20초 동안 50Hz로 샘플링됩니다. 첫 번째 신호의 경우, 측정을 시작하고 13초 후에 천이가 발생합니다. 두 번째 신호의 경우, 측정을 시작하고 5초 후에 천이가 발생합니다. 이 두 신호는 진폭이 서로 다르며, 분산이 다른 백색 가우스 잡음에 묻혀 있습니다. 신호를 플로팅합니다.

t = linspace(0,20,1001)';
e1 = 1.4*tanh(t-13)+randn(size(t))/3;
e2 = tanh(3*(t-5))+randn(size(t))/5;

plot(t,e1,t,e2)
xlabel("Seconds")
ylabel("Amplitude")

Figure contains an axes object. The axes object with xlabel Seconds, ylabel Amplitude contains 2 objects of type line.

천이 시간이 일치하도록 신호를 정렬합니다. 상관 기반의 방법은 이 유형의 신호를 적절하게 정렬할 수 없습니다.

[y1,y2] = alignsignals(e1,e2);

plot(y1)
xlabel("Samples")
ylabel("Amplitude")
hold on
plot(y2)
hold off

Figure contains an axes object. The axes object with xlabel Samples, ylabel Amplitude contains 2 objects of type line.

risetime 방법을 사용하여 신호를 정렬합니다.

[y1,y2] = alignsignals(e1,e2,Method="risetime");

plot(y1)
xlabel("Samples")
ylabel("Amplitude")
hold on
plot(y2)
hold off

Figure contains an axes object. The axes object with xlabel Samples, ylabel Amplitude contains 2 objects of type line.

두 신호 X와 Y를 생성합니다. Y가 앞에 2개의 0이 있다는 점을 제외하면 X와 Y는 완전히 동일합니다. 두 신호를 정렬하고 자르기 옵션을 true로 설정합니다. 이 옵션은 X의 길이를 유지합니다.

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

[Xa,Ya,D] = alignsignals(X,Y,Truncate=true)
Xa = 1×3

     0     0     1

Ya = 1×5

     0     0     1     2     3

D = 
2

자르기 옵션이 X의 원래 데이터를 모두 자를 경우에는 함수가 경고를 발생시킵니다.

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

[Xa,Ya,D] = alignsignals(X,Y,Truncate=true)
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

입력 인수

모두 축소

첫 번째 입력 신호로, 길이가 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
복소수 지원 여부: 예

이름-값 인수

모두 축소

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

예: alignsignals(X,Y,Method="npeak",PeakNum=4)는 각 신호에서 네 번째 피크 위치를 기준으로 X와 Y를 정렬합니다.

신호 간의 지연을 추정하는 방법으로, "xcorr", "maxpeak", "npeak" 또는 "risetime"으로 지정됩니다. 지정된 Method에 따라 이름-값 인수를 추가로 지정할 수 있습니다.

  • "xcorr" — 상호상관을 사용하여 지연을 추정합니다. Method를 "xcorr"로 지정할 경우 MaxLag도 지정할 수 있습니다.

  • "maxpeak" — 각 신호에서 최고 피크 위치를 사용하여 지연을 추정합니다. Method를 "maxpeak"로 지정할 경우 선택적으로 MinPeakProminence와 MinPeakHeight를 지정할 수 있습니다.

  • "npeak" — 각 신호에서 n번째 피크의 위치를 사용하여 지연을 추정합니다. Method를 "npeak"로 지정할 경우 선택적으로 PeakNum, MinPeakProminence 및 MinPeakHeight를 지정할 수 있습니다.

  • "risetime" — 각 신호에서 상승 에지의 위치를 사용하여 지연을 추정합니다. 함수는 StateLevels에 지정된 값을 사용하여 상승 에지를 찾습니다.

예: Method="npeak",PeakNum=3

신호 간의 지연을 추정하는 데 사용되는 최대 윈도우 크기로, 정수 스칼라로 지정됩니다. 기본적으로 MaxLag는 max(Lx,Ly)–1입니다. 여기서 Lx는 x의 길이이고 Ly는 y의 길이입니다. MaxLag가 음수이면 함수는 절댓값을 사용합니다.

이 인수는 Method가 "xcorr"로 설정된 경우에만 적용됩니다.

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

신호를 정렬하는 데 사용되는 피크 번호로, 양의 정수로 지정됩니다. 이 인수는 Method를 "npeak"로 지정하는 경우에만 적용됩니다.

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

신호의 피크를 식별하는 데 사용되는 최소 피크 돌출부로, 음이 아닌 실수형 스칼라로 지정됩니다. MinPeakProminence를 지정하면 함수는 상대적 중요도가 최소한 지정된 값에 대응하는 피크를 찾습니다. 자세한 내용은 findpeaks 항목과 돌출부 항목을 참조하십시오.

이 인수는 Method를 "npeak" 또는 "maxpeak"로 지정하는 경우에만 적용됩니다.

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

신호의 피크를 식별하는 데 사용되는 최소 피크 높이로, 실수형 스칼라로 지정됩니다. MinPeakHeight를 지정하면 함수는 지정된 값보다 큰 높이를 갖는 피크를 찾습니다. 자세한 내용은 findpeaks 항목을 참조하십시오.

이 인수는 Method를 "npeak" 또는 "maxpeak"로 지정하는 경우에만 적용됩니다.

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

상태 레벨로, 요소를 2개 가진 실수 값 행 벡터로 지정됩니다. 첫 번째 요소는 입력 신호의 하부 상태 레벨에 대응되고, 두 번째 요소는 입력 신호의 상부 상태 레벨에 대응됩니다. StateLevels를 지정하지 않을 경우 함수는 히스토그램 방법으로 입력 파형의 상태 레벨을 추정합니다. 자세한 내용은 risetime 항목을 참조하십시오.

이 인수는 Method를 "risetime"으로 지정하는 경우에만 적용됩니다.

예: Method="risetime",StateLevels=[0.5 2]

데이터형: double

입력 신호를 자르는 옵션으로, 숫자형 또는 논리값 1(true) 또는 0(false)으로 지정됩니다. Truncate를 true로 지정할 경우 xa 및 ya의 길이는 각각 x 및 y의 길이와 같습니다.

  • 추정된 지연값 D가 양수이면 함수는 D개의 0을 x 앞에 추가하고 x의 마지막 D개 샘플을 자릅니다.

  • D가 음수이면 함수는 –D개의 0을 y 앞에 추가하고 y의 마지막 D개 샘플을 자릅니다.

  • D ≥ Lx이면 xa는 Lx개의 0으로 구성되고 x의 모든 샘플은 손실됩니다. –D ≥ Ly이면 ya는 Ly개의 0으로 구성되고 y의 모든 샘플은 손실됩니다.

출력 인수

모두 축소

정렬된 첫 번째 신호로, 두 번째 출력 인수 ya에 맞춰 정렬된 숫자형 벡터로 반환됩니다.

  • 입력 인수 x가 행 벡터이면 xa도 행 벡터가 됩니다.

  • 입력 인수 x가 열 벡터이면 xa도 열 벡터가 됩니다.

Truncate를 true로 지정할 경우 추정된 지연값 D가 양수이면, xa는 입력 신호 x에서 D개의 0이 앞에 추가되고 마지막 D개의 샘플이 잘린 것과 동일합니다.

정렬된 두 번째 신호로, 첫 번째 출력 인수 Xa에 맞춰 정렬된 숫자형 벡터로 반환됩니다.

  • 입력 인수 y가 행 벡터이면 ya도 행 벡터가 됩니다.

  • 입력 인수 y가 열 벡터이면 ya도 열 벡터가 됩니다.

Truncate를 true로 지정할 경우 추정된 지연값 D가 음수이면, ya는 입력 신호 y에서 –D개의 0이 앞에 추가되고 마지막 –D개의 샘플이 잘린 것과 동일합니다.

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

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

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

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

입력 인수 MaxLag의 값을 지정할 경우, D는 MaxLag보다 작거나 같습니다.

참고 문헌

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

확장 기능

모두 확장

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

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2007a에 개발됨

모두 확장