Я хочу вычислить ядровую версию корреляции Пирсона, поэтому мне нужно писать код вместо использования команды corrcoef, в соответствии с формулой я должен написать cov и std отдельно, я использовал трюк с точечным произведением для cov, и когда я Я использую его для STD результат не соответствует действительности ( этот трюк )
На самом деле я точно знаю, как вводить ядро (например, Gaussian в std)
for i=1:p;
one_vector(1:size(Signals{i,1},1)) = 1;
mu = (one_vector * Signals{i,1}) / size(Signals{i,1},1);
A_mean_subtract = Signals{i,1} - mu(one_vector, :);
for j=1:116
u=(A_mean_subtract(:,j));
for z=1:116;
v=(A_mean_subtract(:,z));
r=sqrt(sum((u-v).^2)); ---- cov in Gaussian form ( instead of u'*v) I put u and v in gaussian kernel formula
gamma=1/(2*100^2);
k=exp(-gamma*(r^2));
covB(j,z) = k / (size(Signals{i,1},1) - 1);---- it is correct
K_R(j,z)= covB(j,z)/sqrt((u'*u)*(v'*v);---- I know that I have to kernelized this part like above but before that the result is not correct in sipmle form (not kernelized) let alone kernel form
end
end