0001 function new_gradients=Orth(gradients,oldgradients);
0002
0003 global client_server_mode IMDataCounter
0004
0005
0006 new_gradients=gradients;
0007
0008 numparams=length(gradients);
0009 for i=1:numparams,
0010
0011
0012 gradient=gradients{i};
0013 oldgradient=oldgradients{i};
0014
0015 if isempty(oldgradient),
0016 oldgradient=zeros(length(gradient),1);
0017 end
0018
0019
0020 gradient=gradient/norm(gradient);
0021
0022
0023 gradient=gradient-(gradient'*oldgradient)*oldgradient;
0024
0025
0026 gradient=gradient/norm(gradient);
0027
0028
0029 new_gradients{i}=gradient;
0030 end