contrast_tca_grad.m
来自「The tca package is a Matlab program that」· M 代码 · 共 39 行
M
39 行
function [J0,gradJs]=contrast_tca_grad(x,W,param)
m=size(W,1);
gradJs=cell(1,m);
[J0,details]=contrast_tca(x,W,param);
s=W'*x;
fixedind=param.fixedind;
variableind=setdiff(1:m,param.fixedind);
for i=variableind
w0=W(:,i);
wc=null(w0');
WTgradF=zeros(m,1);
dr=0.001;
for j=2:m
wdr=w0*cos(dr)+wc(:,j-1)*sin(dr);
Wnew=W;
Wnew(:,i)=wdr;
J=contrast_tca_update(x,Wnew,param,i,details);
WTgradF=WTgradF+(J-J0)/dr*wc(:,j-1);
end
% WTgradF
gradJs{i}=WTgradF;
if (1)
WTgradF=zeros(m,1);
dr=-0.001;
for j=2:m
wdr=w0*cos(dr)+wc(:,j-1)*sin(dr);
Wnew=W;
Wnew(:,i)=wdr;
J=contrast_tca_update(x,Wnew,param,i,details);
WTgradF=WTgradF+(J-J0)/dr*wc(:,j-1);
end
% WTgradF
% pause
gradJs{i}=(WTgradF+gradJs{i})/2;
end
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?