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
| function apr = fa_pr(px,pz,visu)
% px : position horizontal
% pz : position vertical
% apr : activation position rétinienne
% visu : pour visualiser la répartition et la sortie des units
%% initialisation
units = 253;
apr = zeros(units,1);
xz = zeros(units,2);
m = 1;
sigma = 20;
%% coordonnées x et z
x = -90:10:90;
z = x;
for t=1:length(x)
for y=1:length(z)
if sqrt((x(t))^2+(z(y))^2)<=max(x)
xz(m,:)= [x(t),z(y)];
m = m+1;
end
end
end
%% calcul fonction d'activation
for s=1:length(xz)
apr(s) = exp(-((px-xz(s,1))^2+(pz-xz(s,2))^2)/(2*sigma^2));
end
%% visualisation
if visu==1
%% test sur les coordonnées xz
XCentre = 0;
YCentre = 0;
Rayon = 90;
VTheta = 0:pi/180:360*pi/180;
XCercle = XCentre + Rayon * cos(VTheta);
YCercle = YCentre + Rayon * sin(VTheta);
figure
hold on
plot(xz(:,1),xz(:,2),'x')
plot(XCercle, YCercle)
%% fin test
%% test de représentation 3D
[xi,yi] = meshgrid(linspace(min(xz(:,1)),max(xz(:,1)),80),linspace(min(xz(:,2)),max(xz(:,2)),80));
apri = griddata(xz(:,1),xz(:,2),apr,xi,yi);
figure
plot3(xz(:,1),xz(:,2),apr,'r*')
hold on
surf(xi,yi,apri)
colorbar;
plot3(px,pz,1,'bo');
xlabel('x - horizontal')
ylabel('z - vertical')
zlabel('activity')
end
end |
Partager