MATLAB: Does can’t I assign number greater than 1 to a matrix

arrayassignmentidentityMATLABmatrixroundingwhy

Why is value (2,2) of this matrix getting assigned to 1 instead of 9 in this console output? How can I make it take values greater than 1?
>> myMat = ~eye(3)
myMat =
0 1 1
1 0 1
1 1 0
>> myMat(2,2) = 9
myMat =
0 1 1
1 1 1
1 1 0

Best Answer

~eye(3) returns a logical array. You must convert it to double. Use:
logicalMat = ~eye(3);
myMat = double(logicalMat);
myMat(2,2) = 9;