این یکی
a=[1 2 3];
x=rand(1,3);
y=rand(1,3);
function ret= indexV(Smini,S,v)
ret=0;
if (numel(Smini)==0)
return;
end
for i=1:numel(S)
if(size(S{i},2)<numel(Smini))
ret=ret+size(S{i},1);
else
[val,dx]=ismember(Smini, S{i},'rows');
ret=ret+dx;
break;
end
end
ret=v(ret);
end
k=1;
S={};
v=[];
for i=1:numel(a)
s=nchoosek(a,i);
S{i}=s;
for j=1:size(s,1)
v(k)=sum(x(s(j,:)).*y(s(j,:)));
k=k+1;
end
end
k=1;
phi=zeros(1,numel(a));
for i=1:numel(S)
for j=size(S{i},1)
for z=1:numel(a)
if (ismember(a(z),S{i}(j,:)))
phi(z)=phi(z)+factorial(numel(S{i}(j,:))-1)* factorial(numel(a) -numel(S{i} (j,:)))* (v(k)-indexV(setdiff( S{i}(j,:) ,a(z)),S,v))/ factorial(numel(a));
k=k+1;
end
end
end
end
disp(phi)