Convolution matrix of Galois field vector

`A = convmtx(c,n) `

A *convolution matrix* is a matrix, formed
from a vector, whose inner product with another vector is the convolution
of the two vectors.

`A = convmtx(c,n) `

returns
a convolution matrix for the Galois vector `c`

. The
output `A`

is a Galois array that represents convolution
with `c`

in the sense that `conv(c,x)`

equals

`A*x`

, if`c`

is a column vector and`x`

is any Galois column vector of length`n`

. In this case,`A`

has`n`

columns and`m+n-1`

rows.`x*A`

, if`c`

is a row vector and`x`

is any Galois row vector of length`n`

. In this case,`A`

has`n`

rows and`m+n-1`

columns.

The code below illustrates the equivalence between using the `conv`

function
and multiplying by the output of `convmtx`

.

m = 4; c = gf([1; 9; 3],m); % Column vector n = 6; x = gf(randi([0 2^m-1],n,1),m); ck1 = isequal(conv(c,x), convmtx(c,n)*x) % True ck2 = isequal(conv(c',x'),x'*convmtx(c',n)) % True

The output is

ck1 = 1 ck2 = 1

Was this topic helpful?