MATLAB中alignsignals函数使用
目錄
語法
說明
示例
對齊兩個信號,其中第一個信號滯后三個樣本
對齊兩個信號,其中第二個信號滯后兩個樣本
對齊第二個信號有噪聲的兩個信號
使用“截斷”選項對齊兩個信號
對準一個信號和它的周期性重復
????????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)估算兩個輸入信號X和Y之間的延遲D,并返回對齊的信號Xa和Ya。
? ? ? ? (1)如果Y相對于X延遲,則D為正,X延遲D個樣本。
? ? ? ? (2)如果Y相對于X超前,則D為負,Y延遲–D個樣本。
X或Y方向的延遲可以通過前置零來引入。
????????[Xa,Ya] = alignsignals(X,Y,maxlag)使用maxlag作為最大窗口大小來計算兩個輸入信號X和Y之間的估計延遲D,并返回對齊的信號Xa和Ya。
????????[Xa,Ya] = alignsignals(X,Y,maxlag,' truncate ')保持對齊信號Xa和Ya的長度分別與輸入信號X和Y的長度相同。
? ? ? ? (1)如果估計的延遲D是正的,則在X前面加上D個零,并且X的最后D個樣本被截斷。
? ? ? ? (2)如果估計延遲D為負,則Y前面會加上–D個零,Y的最后–D個樣本會被截斷。
注意:X和Y分別是長度為LX和LY的行或列向量。
????????如果D ≥ LX,那么Xa由LX個零組成。X的所有樣本都丟失了。
????????如果–D≥LY,那么Ya由LY個零組成。Y的所有樣本都丟失了。
????????要避免在使用“truncate”選項時為maxlag分配特定值,請將maxlag設置為[]。
????????[Xa,Ya,D] = alignsignals(___)返回估計的延遲D。此語法可以包括以前語法中使用的任何輸入參數。
示例
對齊兩個信號,其中第一個信號滯后三個樣本
????????通過將信號Y延遲三個樣本,使其相對于X對齊。 創建兩個信號,X和Y。X與Y完全相同,除了X有三個前導零和一個附加的跟零。對準兩個信號。
X = [0 0 0 1 2 3 0 0]; Y = [1 2 3 0];[Xa,Ya] = alignsignals(X,Y)Xa = 1×80 0 0 1 2 3 0 0Ya = 1×70 0 0 1 2 3 0對齊兩個信號,其中第二個信號滯后兩個樣本
????????當Y相對于X延遲兩個樣本時,對齊信號X。 創建兩個信號,X和Y。Y與X完全相同,只是Y有兩個前導零。對準兩個信號。
X = [1 2 3]; Y = [0 0 1 2 3]; maxlag = 2;[Xa,Ya,D] = alignsignals(X,Y,maxlag)Xa = 1×50 0 1 2 3Ya = 1×50 0 1 2 3D = 2對齊第二個信號有噪聲的兩個信號
????????將信號Y相對于X對齊,盡管Y是一個高噪聲信號。 創建兩個信號,X和Y。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×60 0 1 2 3 0Ya = 1×60.0200 0.1200 1.0800 2.2100 2.9500 -0.0900D = 0????????你不需要改變輸入信號來產生輸出信號。延遲D為零。
使用“截斷”選項對齊兩個信號
????????調用alignsignals函數時調用“truncate”選項。 創建兩個信號,X和Y。Y與X完全相同,只是Y有兩個前導零。應用“截斷”指令對齊兩個信號。
X = [1 2 3]; Y = [0 0 1 2 3];[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')Xa = 1×30 0 1Ya = 1×50 0 1 2 3D = 2????????注意,輸出信號Xa的長度為3,與輸入信號x的長度相同。 如果使用“truncate”選項最終截斷了X的所有原始數據,則會發出警告。若要使alignsignals發出這樣的警告,請運行以下示例。
Y = [0 0 0 0 1 2 3];[Xa,Ya,D] = alignsignals(X,Y,[],'truncate')????????警告:第一個輸入X中的所有原始數據已被截斷,因為X的長度小于估計的延遲D:為避免截斷此數據,請不要使用“truncate”選項。
Xa = 1×30 0 0Ya = 1×70 0 0 0 1 2 3D = 4對準一個信號和它的周期性重復
????????將信號Y與X對齊,盡管Y是X的周期性重復,返回盡可能小的延遲。 創建兩個信號,X和Y。Y由X的非零部分的兩個副本組成,由零分隔。對準兩個信號。
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×40 1 2 3Ya = 1×130 1 2 3 0 0 0 0 1 2 3 0 0D = -1算法:
????????可以在finddelay函數的規范中找到延遲估計的理論(參見算法)。
????????alignsignals函數使用估計的延遲D來延遲最早的信號,使得兩個信號具有相同的起始點。
????????如finddelay函數所規定的,這對信號不需要彼此是精確延遲的副本。然而,只有當信號之間存在足夠的相關性時,信號才能成功對齊。有關估計協方差和相關函數的更多信息,請參見[1]。
????????如果信號具有脈沖或過渡等特征,可以使用測量函數而不是相關來更有效地對齊它們。有關示例,請參見對齊兩個雙電平波形。
參考:
????????[1] Orfanidis, Sophocles J.?Optimum Signal Processing. An Introduction. 2nd Ed. Englewood Cliffs, NJ: Prentice-Hall, 1996.
總結
以上是生活随笔為你收集整理的MATLAB中alignsignals函数使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 性能测试实施流程
- 下一篇: 红黑树封装实现树形结构的关联式容器(ma