Matrix multiplication with logical values error

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

 Respuesta aceptada

Massimo Zanetti
Massimo Zanetti el 31 de Oct. de 2016
Editada: Massimo Zanetti el 31 de Oct. de 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..

Más respuestas (1)

Hans Ruder
Hans Ruder el 11 de Jun. de 2025
Alternatively, you can simply do:
dyd = I & J
Then the result will keep the logical data type.

Categorías

Productos

Preguntada:

el 31 de Oct. de 2016

Respondida:

el 11 de Jun. de 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by