student007
Newbie level 3
Re: Frequency Domain LMS-Algorithmus
Hi!
thank you first of all for your quick response.
my english is far to be spectacular but i will try:
So I want to implement a block LMS algorithm, :
- The input sequence x [n] is divided into blocks of length C, where C is the DFT length. To get from one block to another, we make a shift of L values.
-The method (LMS) is then repeated for each block in the frequency range. I want to compute the Frequency Domain LMS-Algorithm because it converges faster than the LMS-Algorithm in time range.(a convolution in the time range corresponds to a simple element-wise multiplication in the frequency range!
The Steps:
1.Filtering using the Overlap-save method in the frequency range:
X [k] = FFT (x [k])
Y [k] = W [k] .* X [k]
y [k] = IFFT (y [k])
Error vector: e [k] = d [k]-y [k]
E [k] = FFT (s [k])
2.Adaption of the filter in the frequency range:
-Power estimation and step size
-Update of the coefficient vector of the filter
where
k = block index, it shoud work like this:
x [1] is the vector which contains the first C values
x [2] is than the result of a shift of x[1] (L values shift) and also contains C values
so general: x [k] = [x [kL + L-C ],........, x [kL + L-1]]
w [k] is then the corresponding weight vector for this block. He has the length N(N<C), so it will be extended to C-N zeros to the length of C:
w [k] = [w1, w2 ,..., wN, 0,0 ,.... 0]
The block way processing entails that the filter output is calculated for each block and y[k] has the length L.
I can explain more details concerning the power estimation etc..
I dont even know how to begin, i thought maybe i can build a function that calculates the algorithm for one block, since it will be repeated for each Block.
And in the main programm, i can make the first step ( devide the input signal x[n] into several blocks x[k], that will be used than for the function), i may need a loop..
I am making my first experience with matlab, so i am having a lot of trouble
I can also answer questions about the algorithm.
Thank you for your help and your patience
Hi!
thank you first of all for your quick response.
my english is far to be spectacular but i will try:
So I want to implement a block LMS algorithm, :
- The input sequence x [n] is divided into blocks of length C, where C is the DFT length. To get from one block to another, we make a shift of L values.
-The method (LMS) is then repeated for each block in the frequency range. I want to compute the Frequency Domain LMS-Algorithm because it converges faster than the LMS-Algorithm in time range.(a convolution in the time range corresponds to a simple element-wise multiplication in the frequency range!
The Steps:
1.Filtering using the Overlap-save method in the frequency range:
X [k] = FFT (x [k])
Y [k] = W [k] .* X [k]
y [k] = IFFT (y [k])
Error vector: e [k] = d [k]-y [k]
E [k] = FFT (s [k])
2.Adaption of the filter in the frequency range:
-Power estimation and step size
-Update of the coefficient vector of the filter
where
k = block index, it shoud work like this:
x [1] is the vector which contains the first C values
x [2] is than the result of a shift of x[1] (L values shift) and also contains C values
so general: x [k] = [x [kL + L-C ],........, x [kL + L-1]]
w [k] is then the corresponding weight vector for this block. He has the length N(N<C), so it will be extended to C-N zeros to the length of C:
w [k] = [w1, w2 ,..., wN, 0,0 ,.... 0]
The block way processing entails that the filter output is calculated for each block and y[k] has the length L.
I can explain more details concerning the power estimation etc..
I dont even know how to begin, i thought maybe i can build a function that calculates the algorithm for one block, since it will be repeated for each Block.
And in the main programm, i can make the first step ( devide the input signal x[n] into several blocks x[k], that will be used than for the function), i may need a loop..
I am making my first experience with matlab, so i am having a lot of trouble
I can also answer questions about the algorithm.
Thank you for your help and your patience