Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Frequency Domain LMS-Algorithm

Status
Not open for further replies.

student007

Newbie level 3
Joined
Jul 20, 2010
Messages
3
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,312
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 :mad:

I can also answer questions about the algorithm.

Thank you for your help and your patience :)
 

I am afraid your question is not very clear. Do you need help to implement this algorithm?
 

Yes! I have written some lines but i still dont have the solution.
Sp plz i am asking if you can help me writing the implemention, or you you have some suggestion or Tips!
 

OK, I would start with writing down the algorithm without using functions, just a batch script. The optimization comes later as you develop your blocks.

Start defining the input vectors, their length and make sure that you understand how to multiply two vectors in matlab language. Test an FFT with different vector lengths, try do run the FFT for a sub-set of the input vector and increment the index of the sub-set. Once you know how to do all this, the rest should be rather easy.

I can guide you and help debugging your code but I will not write it for you.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top