J'essaie de convertir certains éléments d'une matrice en zéros en fonction d'un tableau logique.Tableaux logiques en tant qu'indices de tableaux pour convertir des éléments à zéro dans MATLAB
Supposons que nous ayons une matrice 5 x 5
au hasard:
b =
0.0344 0.1869 0.7547 0.1190 0.2238
0.4387 0.4898 0.2760 0.4984 0.7513
0.3816 0.4456 0.6797 0.9597 0.2551
0.7655 0.6463 0.6551 0.3404 0.5060
0.7952 0.7094 0.1626 0.5853 0.6991
Et je un tableau de zéros et ceux avec la même dimension:
a =
0 1 1 0 0
1 0 1 1 0
1 1 0 1 1
0 1 1 0 1
0 0 1 1 0
Faire a(logical(b))
me donne les éléments que je suis à la recherche , mais sous une forme vectorielle:
ans =
0.4387
0.3816
0.1869
0.4456
0.6463
0.7547
0.2760
0.6551
0.1626
0.4984
0.9597
0.5853
0.2551
0.5060
Comment puis-je obtenir le matrice suivante à la place?
0 0.1869 0.7547 0 0
0.4387 0 0.2760 0.4984 0.7513
0.3816 0.4456 0 0.9597 0.2551
0 0.6463 0.6551 0 0.5060
0 0 0.1626 0.5853 0
Vous pouvez faire 'b (a == 0) = 0;' être encore plus court. Je dirais que cela indique plus expressément ce que vous voulez faire plutôt que d'utiliser '~ logical (a)'. – rayryeng
Vous pouvez également faire une multiplication par éléments '. *'. – knedlsepp