


FUNCTION aclms() implements the Augmented CLMS (ACLMS) algorithm
Based on the paper "The Augmented Complex Least Mean Square Algorithm With Application To Adaptive Prediction Problems" Proc. 1st IARP Workshop on Cognitive Information Processing, 2008, 54-57
INPUT:
x: input signal
N: filter length
mu: step-size
OUTPUT:
y: filter output
Complex Valued Nonlinear Adaptive Filtering toolbox for MATLAB
Supplementary to the book:
"Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models"
by Danilo P. Mandic and Vanessa Su Lee Goh
(c) Copyright Danilo P. Mandic 2009
http://www.commsp.ee.ic.ac.uk/~mandic
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You can obtain a copy of the GNU General Public License from
http://www.gnu.org/copyleft/gpl.html or by writing to
Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
...........................................

0001 % FUNCTION aclms() implements the Augmented CLMS (ACLMS) algorithm 0002 % Based on the paper "The Augmented Complex Least Mean Square Algorithm With Application To Adaptive Prediction Problems" Proc. 1st IARP Workshop on Cognitive Information Processing, 2008, 54-57 0003 % 0004 % INPUT: 0005 % x: input signal 0006 % N: filter length 0007 % mu: step-size 0008 % 0009 % OUTPUT: 0010 % y: filter output 0011 % 0012 % Complex Valued Nonlinear Adaptive Filtering toolbox for MATLAB 0013 % Supplementary to the book: 0014 % 0015 % "Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models" 0016 % by Danilo P. Mandic and Vanessa Su Lee Goh 0017 % 0018 % (c) Copyright Danilo P. Mandic 2009 0019 % http://www.commsp.ee.ic.ac.uk/~mandic 0020 % 0021 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0022 % This program is free software; you can redistribute it and/or modify 0023 % it under the terms of the GNU General Public License as published by 0024 % the Free Software Foundation; either version 2 of the License, or 0025 % (at your option) any later version. 0026 % 0027 % This program is distributed in the hope that it will be useful, 0028 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0029 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0030 % GNU General Public License for more details. 0031 % 0032 % You can obtain a copy of the GNU General Public License from 0033 % http://www.gnu.org/copyleft/gpl.html or by writing to 0034 % Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. 0035 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0036 % ........................................... 0037 function y = aclms(x,N,mu) 0038 0039 M = 1;% prediction horizon 0040 L = length(x)-M; 0041 filterinput = zeros(N,L); 0042 WLMS = zeros(N,1); % weight vector of standard input vector 0043 AWLMS = zeros(N,1); % weight vector of conjugate input vector 0044 eALMS = zeros(1,L); % error 0045 filteroutput = zeros(1,L); 0046 0047 for i = 1:L 0048 for m = 1:N 0049 if (i-m+1)>0 0050 filterinput(m,i) = x(1,i-m+1); 0051 else 0052 filterinput(m,i) = 0; 0053 end 0054 end% inputing FIR 0055 conjinput = conj(filterinput); 0056 filteroutput(i) = transpose(filterinput(:,i)) * WLMS + transpose(conjinput(:,i)) * AWLMS;% filter output 0057 eALMS(i) = x(1,i+M) - filteroutput(i); 0058 WLMS = WLMS + mu * eALMS(i) * conj(filterinput(:,i));% weight update of standard input vector 0059 AWLMS = AWLMS + mu * eALMS(i) * conj(conjinput(:,i));% weight update of conjugate input vector 0060 end 0061 y = filteroutput;