2016-12-15 3 views
2

peut-être me manque l'évidence, mais comment puis-je obtenir la valeur moyenne de la matrice suivante?comment calculer la valeur moyenne d'une matrice incomplète avec maxima?

matrix([  ,  ,   ], 
     [7.5133,  , 5.3  ], 
     [4.93 , 5.7667 , 2.9067 ]); 

J'ai essayé moyenne, geometric_mean, ... et les autres commandes du paquet descriptif, mais ils ne fonctionnent pas avec des valeurs manquantes.

salutations Marcus

+1

Hmm, je ne comprends pas comment vous avez tapé dans cette matrice. Je reçois un message d'erreur lorsque je le copie dans Maxima, à cause des virgules qui n'ont pas d'éléments réels entre eux. –

+0

Cher Robert, désolé pour la réponse tardive à votre commentaire. Vous avez raison, j'ai tapé la matrice avec a1: matrix ([NIL, NIL, NIL], [7.5, NIL, 5.3], ...) et plus tard j'ai utilisé matrixmap (lambda ([u], si u = NIL alors "" sinon vous), a1); se débarrasser des NIL. Je l'ai essayé de cette façon, parce que je pensais que NIL pourrait être la cause principale des problèmes avec mean() et plus tard je ne l'ai jamais changé. Cordialement, Marcus – IInatas

Répondre

1

Je pense qu'il ont à mettre en œuvre. Par exemple

M: matrix(
    [ und ,  und, und], 
    [7.5133,  und, 5.3], 
    [4.93 , 5.7667 , 2.9067]) $ 

ulength(x):=block([n: 0], matrixmap(lambda([e], if e#'und then n: n + 1), x), n) $ 
usum(x):=block([s: 0], matrixmap(lambda([e], if e#'und then s: s + e), x), s) $ 
umean(x):=usum(x)/ulength(x) $ 
umean(M); 
+0

Cher slitvinov, – IInatas

+0

Cher slitvinov, merci beaucoup pour votre solution. Il a résolu mon problème très bien et tout ce que j'avais à ajouter est un appel de carte pour remplacer les cellules vides par 'und. – IInatas

+0

ma réputation est trop faible pour vous voter, désolé pour cela. salutations, Marcus – IInatas