2017-09-28 2 views
0

Si j'ai une matrice carrée de tableaux tels que:Comment obtenir la moyenne des premières valeurs dans des tableaux dans la matrice dans Matlab

[1,2], [2,3]

[5, 9], [1,4]

Et je veux obtenir la moyenne des premières valeurs dans les tableaux de chaque rangée tels:

1,5

Est-ce possible dans Matlab? J'ai utilisé la commande mean (matrix, 2) pour faire cela avec une matrice de valeurs simples, mais je ne suis pas sûr de savoir comment l'étendre pour traiter les tableaux.

+5

est votre matrice une matrice 3D avec ces valeurs servant de tranches? Votre notation est confuse. Veuillez utiliser la syntaxe MATLAB pour exprimer votre matrice. – rayryeng

Répondre

0

Vous pouvez appliquer la fonction moyenne à la fonction moyenne pour obtenir la valeur moyenne totale du tableau 2D à l'index 1. Vous pouvez faire la même chose avec array à l'index 2. Considérons l'instantané suivant.

+5

Il est plus utile d'avoir du texte réel plutôt qu'un instantané. – rayryeng

+2

Ce n'est pas le résultat qu'il veut – Adiel

1

Obtenez les premiers éléments dans tous les tableaux de la matrice, puis appelez mean fonction

mean(matrix(:,:,1)) 

vous avez besoin peut-être de remodeler avant l'appel mean

a = matrix(:,:,1); 
mean(a(:)) 
+0

Bien que cela réponde mieux à la question, ce n'est que spéculation. Nous n'avons aucune idée sur la forme ou le format de la matrice, donc cette réponse peut ne pas être correcte lorsque le PO décide de modifier sa question ... bien que je soupçonne qu'il ne reviendra jamais. – rayryeng

0

Après avoir regardé votre problème pendant une longue temps, il semble que votre entrée est une matrice 3D où chaque ligne de votre mise en forme correspond à une tranche de matrice 2D. Par conséquent, dans la syntaxe correcte Matlab, votre matrice est en fait:

M = cat(3, [1,2; 2,3], [5,9; 1,4]); 

Nous obtenons ainsi:

>> M = cat(3, [1,2; 2,3], [5,9; 1,4]) 

M(:,:,1) = 

    1  2 
    2  3 


M(:,:,2) = 

    5  9 
    1  4 

La première tranche est la matrice [1,2; 2,3] et la deuxième tranche est [5,9; 1,4]. De ce que cela ressemble, vous voudriez la moyenne de seulement la première colonne de chaque tranche et renvoyez ceci comme un seul vecteur de valeurs. Par conséquent, utilisez la fonction mean et l'index dans la première colonne pour toutes les lignes et les tranches. Cela deviendra malheureusement un tableau 3D singleton, vous aurez donc besoin de faire ressortir les dimensions singleton.

Sans plus tarder:

O = squeeze(mean(M(:,1,:))) 

Nous obtenons ainsi:

>> O = squeeze(mean(M(:,1,:))) 

O = 

    1.5000 
    3.0000