2017-10-08 7 views
0

Supposons que nous ayons la matrice binaire nxn M. Dans MATLAB, je veux trouver l'index "moyen" des points qui correspondent à 1.MATLAB: Recherche de l'index "moyen" dans la matrice binaire carrée

Pour illustrer, les exemples suivants sont montrés. Un cercle rouge indique une valeur de cellule de 1, toutes les autres valeurs de cellule sont 0. Le vert x est l'index que je souhaite renvoyer. Une ligne bleue de meilleur ajustement illustre davantage mon point.

enter image description here

Je suis à la recherche spécifiquement pour le code efficace pour le faire. N'importe qui avec des compétences simples en mathématiques peut calculer cet indice "moyen", mais en raison des inefficacités de MATLAB basées sur la boucle/itération, j'ai besoin d'écrire du code rapide.

+0

* mais en raison de l'inefficacité de ce manque d'efficacité * Matlab? Matlab peut très bien le gérer. Matlab est très bon pour manipuler les matrices. – CroCo

+0

Les boucles sont extrêmement chères dans MATLAB. Boucles particulièrement imbriquées. Dans mon cas spécifique, ce que je suis en train de mettre en œuvre est déjà dans une boucle imbriquée, et donc toute boucle supplémentaire serait hautement indésirable. –

+0

Jetez un coup d'œil à [Vectorisation] (https://www.mathworks.com/help/matlab/matlab_prog/vectorization.html) dans Matlab. – CroCo

Répondre

1

Que diriez-vous ceci:

Rand_matrix=randi([0 1],3,3); %random binary matrix 
[rows,col]=find(Rand_matrix); 
row_mean=mean(rows); 
col_mean=mean(col); 
midpoint=[row_mean,col_mean]