Matrix multiplication with logical values error
6 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Camilo A.
le 31 Oct 2016
Réponse apportée : Hans Ruder
le 11 Juin 2025
I have this matrix:
M =
0 3 0 0
0 2 0 0
2 0 3 4
0 4 0 2
And I call these vectors:
I=~(any(3==M'))', J=~any(3==M)
I =
0
1
0
1
J =
1 0 0 1
Why I cant multiplicate "I*J"? And how can I fix it?
I*J
Error using *
Both logical inputs must be scalar.
To compute elementwise TIMES, use TIMES (.*) instead.
I want this result:
ans =
0 0 0 0
1 0 0 1
0 0 0 0
1 0 0 1
Thanks
0 commentaires
Réponse acceptée
Massimo Zanetti
le 31 Oct 2016
Modifié(e) : Massimo Zanetti
le 31 Oct 2016
For logical matrices matrix multiplication doesn't apply (because it is not logical operation). To get your Dyadic product, cast to double:
dyd = double(I)*double(J)
NOTE: matrix product is not fully supported for integer classes in MATLAB, so casting to integer types (to save memory) won't work too..
0 commentaires
Plus de réponses (1)
Hans Ruder
le 11 Juin 2025
Alternatively, you can simply do:
dyd = I & J
Then the result will keep the logical data type.
0 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!