FUNCTION aangd() implements the AANGD algorithm Based on the paper "A complex-valued nonlinear neural adaptive filter with a gradient adaptive amplitude of the activation function" Neural Networks, vol. 16, issue 2, pp. 155-159, 2003. INPUT: x: input signal which should be scaled according to the dynamic range of nonlinearity N: filter length mu: step-size lambda: initial value of amplitude of nonlinearity rho: step-size of adaptive amplitude 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 aangd() implements the AANGD algorithm 0002 % 0003 % Based on the paper "A complex-valued nonlinear neural adaptive filter with a gradient adaptive amplitude of the activation function" 0004 % Neural Networks, vol. 16, issue 2, pp. 155-159, 2003. 0005 % 0006 % INPUT: 0007 % x: input signal which should be scaled according to the dynamic range of nonlinearity 0008 % N: filter length 0009 % mu: step-size 0010 % lambda: initial value of amplitude of nonlinearity 0011 % rho: step-size of adaptive amplitude 0012 % 0013 % OUTPUT: 0014 % y: filter output 0015 % 0016 % Complex Valued Nonlinear Adaptive Filtering toolbox for MATLAB 0017 % Supplementary to the book: 0018 % 0019 % "Complex Valued Nonlinear Adaptive Filters: Noncircularity, Widely Linear and Neural Models" 0020 % by Danilo P. Mandic and Vanessa Su Lee Goh 0021 % 0022 % (c) Copyright Danilo P. Mandic 2009 0023 % http://www.commsp.ee.ic.ac.uk/~mandic 0024 % 0025 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0026 % This program is free software; you can redistribute it and/or modify 0027 % it under the terms of the GNU General Public License as published by 0028 % the Free Software Foundation; either version 2 of the License, or 0029 % (at your option) any later version. 0030 % 0031 % This program is distributed in the hope that it will be useful, 0032 % but WITHOUT ANY WARRANTY; without even the implied warranty of 0033 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0034 % GNU General Public License for more details. 0035 % 0036 % You can obtain a copy of the GNU General Public License from 0037 % http://www.gnu.org/copyleft/gpl.html or by writing to 0038 % Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. 0039 % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 0040 % ........................................... 0041 function y = aangd(x,N,mu,lambda,rho) 0042 0043 0044 M = 1;% prediction horizon 0045 L = length(x)-M; % run length 0046 filterinput = zeros(N,L); 0047 WAANGD = zeros(N,1); % weight vector of standard input vector 0048 eAANGD = zeros(1,L); % error 0049 filteroutput = zeros(1,L); 0050 0051 for i = 1:L 0052 for m = 1:N 0053 if (i-m+1)>0 0054 filterinput(m,i) = x(1,i-m+1); 0055 else 0056 filterinput(m,i) = 0; 0057 end 0058 end % inputting FIR 0059 filteroutput(i) = transpose(filterinput(:,i)) * WAANGD;% output of FIR filter 0060 output(i) = lambda * f(filteroutput(i)); 0061 eAANGD(i) = x(i+M) - output(i);% error(k) of nonlinear FIR filter 0062 WAANGD = WAANGD + mu * eAANGD(i) * conj(fderive(filteroutput(i))) * conj(filterinput(:,i));% weight update 0063 lambda = lambda + rho * real(eAANGD(i) * conj(f(filteroutput(i)))); % update of adaptive amplitude 0064 end 0065 y = output; 0066 0067 0068