Bonjour,
J’essaye désespérément de programmer une fonction (en plus qui n’a pas l’air compliquée...) mais dont le graphique ne corresponds pas a ce que je devrais –en théorie- obtenir, et j’ai besoin d’aide pour me dire ou j’me plante.
Pour vous mettre dans le bain, je suis en stage et je travaille sur la modélisation de l’œil.
Et j’veux programmer une fonction de sensibilité au contraste qui s’écrit comme suit :
Avec MTFopt = exp (-2*pi*u²*(σ0² + Cab*d))
E= la luminance qui peut varier de 20 à 1000, mais pour la simulation je ne prends que des valeurs entre 20 et 100.
P est un coeff introduit dans le modèle et depends de la source lumineuse, je l'ai pris à 1,2.
et X0 je l'ai pris à 10, dans le modèle c'est la valeur par defaut.
j'obtiens ceci :
alors que je devrais obtenir cela :
Vous allez me dire que c'est resemblant, mais dès qu'on change l'echelle, c'est horrible...
j'vous mets mes lignes de codes : j'ai fait 3 fichiers, la variable est u (la fréquence) et le reste ne sont que des paramètres.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 function S= sensi(u) % essai de la fonction de sensibilité au contraste du modele de Barten. u=[1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 20.0 30.0 50.0 64.0]; k=3; gamma0=0.5; C=0.08; T=0.1; Xmax=12; Nmax=15; eta=0.03; phi0=3*10^(-8); u0=7; X0=10; p=1.2; L=100; d=5-3*tanh(0.4.*log(L)); E=pi.*(d.*d).*L./4; gamma1=sqrt((gamma0*gamma0) + (C*d)*(C*d)); coeff1= 1./(X0*X0); coeff2= 1./(Xmax*Xmax); coeff3= 1./(Nmax*Nmax); coeff4= 1./(eta*p*E); b= (MTFopt(u)./k); g=2/T; a= (coeff1 + coeff2 + (u.*u.*coeff3)); f= (coeff4 + H(u)); i= sqrt(g.*a.*f); S= b./i; loglog(u,S);
--------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 function m = MTFopt(u) gamma0=0.5; C=0.08; u0=7; L=100; d=5-3*tanh(0.4*log(L)); gamma1=sqrt((gamma0*gamma0) + (C*d)*(C*d)); m = exp(-(2*pi*pi.*u.*u*(gamma1*gamma1)));
--------------------------------------------------------------------------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function h = H(u) u0=7; t= 1 - (exp(-((u./u0).*(u./u0)))); h= 3*10^(-8)./t;
Je ne vois pas ou est le problème et pourquoi je n'ai pas une courbe plus resemblante. En plus, le modèle marche car l'auteur en a fait des similations qui redonnent ce que je suis censé trouver.
Merci.
J'espère que je suis à peu prés clair
Partager