Patent ID: 7987220

Claim:
A method for computing equalizer filter coefficients in a communications receiver, the method including: determining, using a processor in a computer, a channel estimation vector f, from at least one channel estimation input; determining equalizer filter coefficients on a basis of a real matrix T generated from said channel estimation vector f, vector f comprising a vector of dimension N, N comprising an odd number, and T comprising an N×N matrix; generating the matrix T by solving a matrix Gc 0 =i 0 for each real and imaginary term in c 0 , wherein G is a channel estimation matrix, c 0 comprises an inverse of a middle column of the matrix G, and i 0 comprises an identity matrix's middle column; performing a matrix inversion on the matrix T in order to determine a middle column of T −1 ; forming a vector v from a middle column of a matrix T −1 and a constant; determining c 0 H on a basis of v; and determining filter coefficients w 0 using a relationship w 0 =c 0 H H H where H H comprises a Hermitian transpose of a channel response matrix H, wherein, the elements of c 0 H are determined on a basis of v according to the following: c 0 H (( N+ 1)/2) to be equal to v (( N+ 1)/2); for elements 1 to (N−1)/2 of c 0 H , c 0 H (x) equals v(x)−(0+i(v(N+1−x)); and for elements (N+1)/2 to N of c 0 H , c 0 H (x) equals v(N+1−x)+(0+i(v(x)), wherein v and c 0 H comprise elements 1 to N, and notations v(x) and c 0 H (x) denote an x-th element in vectors v and c 0 H respectively, wherein rows and columns of the matrix T and columns of vector f, are numbered from 1 to N, a notation T(x, y) denotes an entry in the matrix T in its x-th row and v-th column, a notation f(y) denotes an entry in vector f in its v-th column; R[z] denotes a real part of a number z; and I(z) denotes an imaginary part of the number z, and wherein the elements of the matrix T are generated as follows: T (( N+ 1)/2, ( N+ 1)/2)= R[f (1)/2]; for row (N+1)/2, column numbers from 1 to (N−1)/2: T (( N+ 1)/2, ( N+ 1)/2−column number)= R[f (col−1)] and T (( N+ 1)/2, ( N+ 1)/2+column number)= I[f (col+1)]; and for row number 1 to (N−1)/2 and for the middle column: T (row number, ( N+ 1)/2)= R[f (( N+ 1)/2] ; and T ( N+ 1−row number, ( N+ 1)/2)= I[f (( N+ 1)/2)]; for column numbers 1 to (N−1)/2: T (row number, column number)= R[f (column number)]+ R[f ( N+ 1−column number)]; and T ( N+ 1−row number, N+ 1−column number)= R[f (column number)]− R[f ( N+ 1−column number)]; for column numbers from ((N+1)/2+1) to N: T (row number, column number)= I[f (column number)]− I[f ( N+ 1−column number)]; and T ( N+ 1−row number, N+ 1−column number)= I[f (column number)]+ I[f ( N+ 1−col)]; and for f vector column numbers from N down to 2: f (col)= f (col−1); R[f (1)]= T (( N+ 1)/2, ( N+ 1)/2−row); and i I[f(1)=− T (( N+ 1)/2, ( N+ 1)/2+row)).