alignsignals
설명
[
는 두 입력 신호 xa
,ya
] = alignsignals(x
,y
)x
와 y
간의 지연 D
를 추정하고, 정렬된 신호 xa
와 ya
를 반환합니다. 이 함수는 상호상관을 사용하여 지연을 추정합니다.
y
가x
보다 지연된 경우D
는 양수가 되고x
는D
개 샘플만큼 지연됩니다.y
가x
보다 선행한 경우D
는 음수가 되고y
는 –D
개 샘플만큼 지연됩니다.
입력 신호는 어느 한 쪽이 다른 쪽의 지연된 복제 신호일 필요는 없습니다. 그러나 두 신호 간에 충분한 상관관계가 있는 경우에만 신호를 정확히 정렬할 수 있습니다. 공분산과 상관의 추정에 대한 자세한 내용은 [1] 항목을 참조하십시오.
예제
첫 번째 신호가 3개 샘플만큼 지연된 두 신호 정렬하기
두 신호 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
두 번째 신호가 2개 샘플만큼 지연된 두 신호 정렬하기
두 신호 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")
천이 시간이 일치하도록 신호를 정렬합니다. 상관 기반의 방법은 이 유형의 신호를 적절하게 정렬할 수 없습니다.
[y1,y2] = alignsignals(e1,e2); plot(y1) xlabel("Samples") ylabel("Amplitude") hold on plot(y2) hold off
risetime
방법을 사용하여 신호를 정렬합니다.
[y1,y2] = alignsignals(e1,e2,Method="risetime"); plot(y1) xlabel("Samples") ylabel("Amplitude") hold on plot(y2) hold off
자르기 옵션을 사용하여 두 신호 정렬하기
두 신호 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
입력 인수
x
— 첫 번째 입력 신호
벡터
첫 번째 입력 신호로, 길이가 Lx인 숫자형 벡터로 지정됩니다.
예: [1 2 3]
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
복소수 지원 여부: 예
y
— 두 번째 입력 신호
벡터
두 번째 입력 신호로, 길이가 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
를 정렬합니다.
Method
— 신호 간의 지연을 추정하는 방법
"xcorr"
(디폴트 값) | "maxpeak"
| "npeak"
| "risetime"
신호 간의 지연을 추정하는 방법으로, "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
PeakNum
— 피크 번호
1
(디폴트 값) | 양의 정수
신호를 정렬하는 데 사용되는 피크 번호로, 양의 정수로 지정됩니다. 이 인수는 Method
를 "npeak"
로 지정하는 경우에만 적용됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MinPeakProminence
— 최소 피크 돌출부
0
(디폴트 값) | 음이 아닌 실수형 스칼라
MinPeakHeight
— 최소 피크 높이
–Inf
(디폴트 값) | 실수형 스칼라
StateLevels
— 상태 레벨
요소를 2개 가진 행 벡터
Truncate
— 입력 신호를 자르는 옵션
false
또는 0
(디폴트 값) | true
또는 1
입력 신호를 자르는 옵션으로, 숫자형 또는 논리값 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
의 모든 샘플은 손실됩니다.
출력 인수
참고 문헌
[1] Orfanidis, Sophocles J. Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
버전 내역
R2019a에 개발됨R2022b: 제거될 예정인 구문
아래 구문은 향후 릴리스에서 제거될 예정입니다.
구문 | 결과 | 대신 사용할 구문 |
---|---|---|
alignsignals(x,y,maxlag) | 정상 작동 | alignsignals(x,y,Method="xcorr",MaxLag=maxlag) |
alignsignals(x,y,maxlag,'truncate') | 정상 작동 | alignsignals(x,y,Method="xcorr",MaxLag=maxlag,Truncate=true) |
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)