相關運算、卷積運算與Toeplitz矩陣的關系


設序列\(x[n]\)\(y[n]\)的長度分別為\(N\)\(M\),則兩者的相關及卷積運算可以分別表示為:

\[\begin{cases} R_{xy}[m]=\sum_{n=-\infty}^{\infty}{x[n]y[n+m]}\\ R_{yx}[m]=\sum_{n=-\infty}^{\infty}{y[n]x[n+m]} \tag{1} \end{cases} \]

\[\begin{cases} C_{xy}[m]=\sum_{n=-\infty}^{\infty}{x[n]y[m-n]}\\ C_{yx}[m]=\sum_{n=-\infty}^{\infty}{y[n]x[m-n]} \tag{2} \end{cases} \]

其中\(R_{xy} \neq R_{yx}\)\(C_{xy}=C_{yx}\),且\(R_{xy}[m]=\sum_{n=-\infty}^{\infty}{x[n]y[n+m]}=\sum_{n=-\infty}^{\infty}{x[n]y[m-(-n)]}=x[n]*y[-n]\)。以下通過簡單的例子說明(1)(2)的計算方法:設\(x[n]=[1,2]\)\(y[n]=[4,5,6]\),則\(R_{xy}[m]\)的計算步驟如下:
(1)將\(x[n]\)\(y[n+m]\)表示出來,其中\(x[n]\)恆為原始序列,\(y[n+m]\)表示對\(y[n]\)序列線性左移(\(m>0\))或右移(\(m < 0\))\(m\)位;
(2)將\(x[n]\)\(y[n+m]\)各個位數對齊(因長度不一致導致的兩個序列不對齊的情況,對應數位等效於與0對齊),形成豎式;
(3)對應位置處的數相乘,並把所有相乘結果進行累加。
對於本文例子,具體操作示意如下:

\[\begin{array} & 6 & 0\\ 1 & 2\\ \hline 6 & 0 \rightarrow 6 \end{array} \begin{array} & 5 & 6 \\ 1 & 2 \\ \hline 5 & 12 \rightarrow 17 \end{array} \begin{array} & 4 & 5 \\ 1 & 2 \\ \hline 4 & 10 \rightarrow 14 \end{array} \begin{array} & 0 & 4 \\ 1 & 2 \\ \hline 0 & 8 \rightarrow 8 \end{array} \tag{3} \]

上面每個豎式分別對應\(m=2,1,0,-1\)的情況,所以本例中\(R_{xy}=[6,17,14,8]\),由此可見長度為\(N\)\(M\)的兩個序列的自相關結果長度為\(N+M-1\)

\(C_{xy}[m]\)的計算步驟與上述步驟相似,只是在所有運算之前需要對其中一個序列進行反轉,所以其具體實現步驟可以簡單描述為:
(1)將\(x[n]\)\(y[m-n]\)表示出來,其中\(x[n]\)恆為原始序列,\(y[m-n]\)表示先對原始序列進行反轉得到\(y[-n]\),然后再將\(y[-n]\)序列線性左移(\(m>0\))或右移(\(m < 0\))\(m\)位,在本例中反轉后的\(y[-n]=[6,5,4]\)
(2)將\(x[n]\)\(y[m-n]\)各個位數對齊,(因長度不一致導致的兩個序列不對齊的情況,對應數位等效於與0對齊)形成豎式;
(3)對應位置處的數相乘,並把所有相乘結果進行累加。
對於本文例子,具體操作示意如下:

\[\begin{array} & 4 & 0 \\ 1 & 2 \\ \hline 4 & 0 \rightarrow 4 \end{array} \begin{array} & 5 & 4 \\ 1 & 2 \\ \hline 5 & 8 \rightarrow 13 \end{array} \begin{array} & 6 & 5 \\ 1 & 2 \\ \hline 6 & 10 \rightarrow 16 \end{array} \begin{array} & 0 & 6 \\ 1 & 2 \\ \hline 0 & 12 \rightarrow 12 \end{array} \tag{4} \]

上面每個豎式分別對應\(m=-1,0,1,2\)的情況,所以本例中\(C_{xy}=[12,16,13,4]\),由此可見長度為\(N\)\(M\)的兩個序列的線性卷積長度為\(N+M-1\)
上面的(3)(4)兩個式子可以分別表示為矩陣形式:

\[\vec{R}_{xy}= \begin{bmatrix} 6 \\ 17\\ 14\\ 8\\ \end{bmatrix} = \begin{bmatrix} 6 & 0 \\ 5 & 6 \\ 4 & 5 \\ 0 & 4 \\ \end{bmatrix} \begin{bmatrix} 1\\ 2\\ \end{bmatrix} =\boldsymbol{T} \vec{x} \]

\[\vec{C}_{xy}= \begin{bmatrix} 4 \\ 13\\ 16\\ 12\\ \end{bmatrix} = \begin{bmatrix} 4 & 0 \\ 5 & 4 \\ 6 & 5 \\ 0 & 6 \\ \end{bmatrix} \begin{bmatrix} 1\\ 2\\ \end{bmatrix} =\boldsymbol{T} \vec{x} \]

從上面的式子可以看出,矩陣\(\boldsymbol{T}\)每條對角線元素分別相同,是一個Toeplitz矩陣,所以兩個序列之間的相關或線性卷積運算可以表示為由其中一個序列的元素組成的Toeplitz矩陣和另一個序列的乘積,一般地,設序列\(x[n]=[x_1,...,x_N]\)\(y[n]=[y_1,...,y_M]\),則有

\[\vec{R}_{xy}= \begin{bmatrix} y_M & 0 & 0 & \cdots & 0 \\ y_{M-1} & y_M & 0 & \cdots & 0 \\ y_{M-2} & y_{M-1} & y_{M} & \ddots & \vdots \\ \vdots & \ddots & \ddots & \cdots & \vdots \\ y_1 & y_2 & \ddots & y_{M-1} & y_M \\ 0 & y_1 & \cdots & y_{M-2} & y_{M-1} \\ \vdots & \ddots & \cdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 & y_1 \end{bmatrix} \begin{bmatrix} x_1\\ \vdots\\ x_N\\ \end{bmatrix} \tag{5} \]

\[\vec{C}_{xy}= \begin{bmatrix} y_1 & 0 & 0 & \cdots & 0 \\ y_2 & y_1 & 0 & \cdots & 0 \\ y_3 & y_2 & y_1 & \ddots & \vdots \\ \vdots & \ddots & \ddots & \cdots & \vdots \\ y_M & y_{M-1} & \ddots & y_2 & y_1 \\ 0 & y_M & \cdots & y_3 & y_2 \\ \vdots & \ddots & \cdots & \ddots & \vdots \\ 0 & 0 & \cdots & 0 & y_M \end{bmatrix} \begin{bmatrix} x_1\\ \vdots\\ x_N\\ \end{bmatrix} \tag{6} \]

從上面的表達式可以看出,兩個序列的相關運算和線性卷積運算對應的Toeplitz矩陣的形式一樣,但是序列元素在矩陣中的位置不一樣,且此時Toeplitz矩陣是一個\((N+M-1) \times N\)的矩陣。采用矩陣形式表示容易進行后續分析與計算,因此在相關運算和線性卷積運算中,Toeplitz矩陣很常見,它的相關性質可以參考《托普利茲矩陣》。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM