Covariance et matrice (vba)

Fermé
pheron - 22 nov. 2008 à 15:39
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 25 nov. 2012 à 10:01
Bonjour, je suis débutante et je bloque à un certain niveau !! si je pouvais avoir un p'tit coup de pouce svp !

Function moyennesColonnes(T, n, p As Integer) As Integer

Dim MC() As Integer
Dim i As Integer
Dim j As Integer
Dim s As Integer

ReDim MC(1 To p) As Integer

For j = 1 To p
s = o
For i = 1 To n

s = s + T(i, j)

Next i

MC(j) = s \ n

moyennesColonnes = MC(j)

Worksheets(1).Cells(i + 12, 1).Value = "Les moyennes des colonnes:"
Worksheets("Feuil1").Cells(i + 12, 1).Font.ColorIndex = 5
Worksheets("Feuil1").Cells(i + 12, j + 2) = MC(j)
Worksheets("Feuil1").Cells(i + 12, j + 2).Font.ColorIndex = 5

Next j


End Function 'moyennesColonnes.

Sub variancesColonnes(T, n, p As Integer)

Dim MC() As Integer
Dim VC() As Integer
Dim i, j As Integer
Dim s As Long

ReDim VC(1 To p) As Integer


For j = 1 To p
For i = 1 To n

s = s + T(i, j) * T(i, j)

Next i




VC(j) = s \ n - MC(j) * MC(j) ===>> c'est la que ça coince ! "l'indice n'appartient pas à la sélection "



Worksheets(1).Cells(i + 18, 1).Value = "La variance des colonnes:"
Worksheets("Feuil1").Cells(i + 18, 1).Font.ColorIndex = 3
Worksheets("Feuil1").Cells(i + 18, j + 2) = VC(j)
Worksheets("Feuil1").Cells(i + 18, j + 2).Font.ColorIndex = 3

Next j

End Sub 'variancesColonnes

5 réponses

neogenesis Messages postés 4748 Date d'inscription dimanche 19 octobre 2008 Statut Contributeur Dernière intervention 24 janvier 2010 513
22 nov. 2008 à 15:49
Salut si j'ai bien compris ce qui coince est situé hors de la boucle ?
la variable i est locale à la boucle, et donc à l'extérieur, i ne vaut rien !
0
ce qui coince est à l'intérieur de la boucle j. je cherche à calculer la covariance de chaque colonne de la matrice. en fait il faudrait appeler le résultat de la moyenne de chaque colonne.
0
neogenesis Messages postés 4748 Date d'inscription dimanche 19 octobre 2008 Statut Contributeur Dernière intervention 24 janvier 2010 513
22 nov. 2008 à 16:21
Et ton p, à savoir le dernier indice de tes matrices, tu lui assignes une valeur ?!
0
p c'est le nombre de colonnes du tableau et n le nombre de lignes.

j = indice des colonnes

i= indice des lignes
0
neogenesis Messages postés 4748 Date d'inscription dimanche 19 octobre 2008 Statut Contributeur Dernière intervention 24 janvier 2010 513 > pheron
22 nov. 2008 à 16:31
Et le p tu le défini quand tu appelle la méthode moyenne ?
0
Bonjour

Ton tableau MC n'est pas dimensionné dans la fonction variancesColonnes
0
ah ben oui ! ça a l'air de marcher maintenant ! merci bcp !!
0
bbgirl Messages postés 4 Date d'inscription jeudi 17 novembre 2011 Statut Membre Dernière intervention 24 novembre 2012
24 nov. 2012 à 16:31
bonjour, j'aurais une question comment introduis-tu la covariance dans ton programme sachant que la covariance c'est: est la moyenne des produits moins le produit des moyennes.
en terme de programme on a par exemple:
Function Cov(X() As Single, Y() As Single, n As Integer)
Dim j As Integer
Dim s As Single
For j = 1 To n
s = s + X(j) * Y(j)
Next i
Cov = s / n - MX * MY
End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
Modifié par eriiic le 25/11/2012 à 10:01
Bonjour à tous,

ça a l'air de marcher maintenant ! merci bcp !!

Function moyennesColonnes(T, n, p As Integer) As Integer 
... 
    For j = 1 To p 
.... 
        moyennesColonnes = MC(j) 

        Worksheets(1).Cells(i + 12, 1).Value = "Les moyennes des colonnes:" 
    Next j 
... 

- une fonction ne peut retourner qu'une seule valeur (qui peut être une matrice mais ce n'est pas le cas ici).
- une fonction ne peut modifier son environnement, donc écrire dans une cellule.

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0