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

 採用された回答

Massimo Zanetti
Massimo Zanetti 2016 年 10 月 31 日
編集済み: Massimo Zanetti 2016 年 10 月 31 日

0 投票

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..

その他の回答 (1 件)

Hans Ruder
Hans Ruder 2025 年 6 月 11 日

2 投票

Alternatively, you can simply do:
dyd = I & J
Then the result will keep the logical data type.

カテゴリ

製品

質問済み:

2016 年 10 月 31 日

回答済み:

2025 年 6 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by