1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| %% Fonction d'activation : disparité rétinienne
function adr = fa_dr(dh,dv)
adr = zeros(64,1);
dhv = zeros(64,2);
m = 1;
a0 = 1;
a1 = 0.35;
%% définir x et z
%% cercle inf à 2
x = -2:1:2;
z = -2:1:2;
for t=1:length(x)
for y=1:length(z)
if sqrt((x(t))^2+(z(y))^2)<=2
dhv(m,:)= [x(t),z(y)];
m = m+1;
end
end
end
%% cercle inf à 10 mais sup 2
x = -10:5:10;
z = -10:5:10;
for t=1:length(x)
for y=1:length(z)
if sqrt((x(t))^2+(z(y))^2)<=10 && sqrt((x(t))^2+(z(y))^2)>2
dhv(m,:)= [x(t),z(y)];
m = m+1;
end
end
end
%% ellipse 45,30 mais sup à cercle 10
x = -50:10:50;
z = -30:10:30;
ae = 45;
be = 30;
for t=1:length(x)
for y=1:length(z)
F2 = sqrt(ae^2-be^2);
F1 = -F2;
d1 = sqrt(z(y)^2+(x(t)-F2)^2);
d2 = sqrt(z(y)^2+(x(t)-F1)^2);
if sqrt((x(t))^2+(z(y))^2)>10 && (d1+d2)<=2*ae
dhv(m,:)= [x(t),z(y)];
m = m+1;
end
end
end
% %% test sur les coordonnées xz
% x=-45:0.1:45;
% y=sqrt(30^2-30^2*(x.^2/45^2));
% y1=-y;
% figure
% hold on
% plot(x,y)
% plot(x,y1)
% plot(dhv(:,1),dhv(:,2),'x')
% %% fin test
sigma = sqrt((dh^2+dv^2)/2);
if sigma<10/60
sigma = 10/60;
end
for s=1:length(dhv)
if dhv(s,1)<=-1
ahdr = a0 * exp(-(dh-dhv(s,1))^2/sigma^2) - a1 * exp(-(dh-dhv(s,1)-sigma^2)^2/sigma^2);
avdr = a0 * exp(-(dv-dhv(s,2))^2/sigma^2) - a1 * exp(-(dv-dhv(s,2)-sigma^2)^2/sigma^2);
elseif dhv(s,1)>=1
ahdr = a0 * exp(-(dh-dhv(s,1))^2/sigma^2) - a1 * exp(-(dh-dhv(s,1)+sigma^2)^2/sigma^2);
avdr = a0 * exp(-(dv-dhv(s,2))^2/sigma^2) - a1 * exp(-(dv-dhv(s,2)+sigma^2)^2/sigma^2);
elseif dhv(s,1)<1 && dhv(s,1)>-1
ahdr = a0 * exp(-(dh-dhv(s,1))^2/sigma^2);
avdr = a0 * exp(-(dv-dhv(s,2))^2/sigma^2);
end
adr(s) = ahdr * avdr;
end
[xi,yi] = meshgrid(linspace(min(dhv(:,1)),max(dhv(:,1)),100),linspace(min(dhv(:,1)),max(dhv(:,2)),100));
adri = griddata(dhv(:,1),dhv(:,2),adr,xi,yi);
%% test de représentation 3D
figure
plot3(dhv(:,1),dhv(:,2),adr,'r*')
hold on
size(dhv)
size(adri)
surf(dhv(:,1),dhv(:,2),adri)
plot3(2,1,1,'bo');
xlabel('x - horizontal')
ylabel('z - vertical')
zlabel('activity') |
Partager