Implementing an NLMS algorithm for a MISO structure

2 views (last 30 days)
I am trying to implement an NLMS algorithm for the purpose of acoustic echo cancellation. I know how to implement the algorithm when the adaptive filter to be designed is a vector (namely our h_hat). But I don't know how to implement the algorithm for multi-input single-output structure, where H is a matrix.
I have a reference signal x, then I define my current frame as:
for k = 1:length(x)
% prepare current frame
xk = [xk(2:end) ; x(k)];
then I have the following equation as the new set of input signals:
x_o,p (k) = x(k)^p ,
where 1<p<P. So now H is a matrix (N x P) contains all adaptive filters. For a case where h is just a vector of lenght N, I did the following:
y_hat = h_hat' * xk;
% calculate error signal (residual)
e(k) = y(k) - y_hat;
% adapt filter using NLMS algorithm
h_hat = h_hat + alpha * e(k) * xk / (xk'*xk );
end
But I don't know how to develop the code for this new MISO case ( with the new set of inputs). I don't know to define the error for each sample k in this case, since our H is now a matrix, and our e(k) must be a scalar.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!