Matrix multiplication with logical values error
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Camilo A.
am 31 Okt. 2016
Beantwortet: Hans Ruder
am 11 Jun. 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 Kommentare
Akzeptierte Antwort
Massimo Zanetti
am 31 Okt. 2016
Bearbeitet: Massimo Zanetti
am 31 Okt. 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 Kommentare
Weitere Antworten (1)
Hans Ruder
am 11 Jun. 2025
Alternatively, you can simply do:
dyd = I & J
Then the result will keep the logical data type.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!