Bonjour à tous,
J'ai commencé Fortran hier pour m'adapter à un projet déjà existant, je suis plutôt habitué à python...
j'ai donc realisé un petit programme (voir ci-dessous) qui est sensé prendre en entrée une liste de 0 et de 1 et me donner l'entropie de shannon de ce signal.
cependant, quand je tape une liste à la main quand j'execute mon programme dans le terminal il me retourne "NaN"....
j'ai des difficulté à comprendre la source problème.
Merci !
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
28 program testEnt implicit none integer, dimension(:), allocatable::sig read(*,*),sig print*, Entropy(sig) contains !--fonction to get log in base 2 real function log2(x) implicit none real, intent(in) :: x log2 = log(x) / log(2.) end function log2 !--fonction to get the Shannon Entropy from list of booleans real function Entropy(signal) implicit none integer, dimension(:), intent(inout)::signal integer::n integer::nb1 n=size(signal) nb1=sum(signal) Entropy=-((real(nb1)/n)*log2(real(nb1)/n)+(real((n-nb1))/n)*log2(real(n-nb1)/n)) end function Entropy end program testEnt
Partager