function [kp] = krls( kp, state, target ) % function [kp] = krls( kp, state, target ) % % Part of my Kernel Recursive Least Squares implementation. % % INPUT: % kp - the data structure returned from krls_init (or subsequent % calls to this function). % state - the next state vector (a column vector) % target - the target value (scalar). % % OUTPUT: % kp - updated problem data structure. % % D. Wingate 10/25/2006 % m = size( kp.dp.Dict, 2 ); % number of entries kp.dp = dict( kp.dp, state ); at = kp.dp.at; dt = kp.dp.dt; ktwid = kp.dp.ktwid; Kinv = kp.dp.Kinv; if ( kp.dp.addedFlag ) kp.P = [ kp.P, zeros(m,1); zeros(1,m), 1 ]; inno = ( target - ktwid'*kp.Alpha )/dt; kp.Alpha = [ kp.Alpha - at*inno; inno ]; kp.addedFlag = 1; else tmp = kp.P * at; qt = tmp / ( 1 + at'*tmp ); kp.P = kp.P - qt*tmp'; kp.Alpha = kp.Alpha + Kinv*qt*( target - ktwid'*kp.Alpha ); kp.addedFlag = 0; end; return;