Modifying elements of a Matrix


#####Example 1#################

a=rand(2,2)

b=a

b=ones(size(a))

a

#####Example 2#########################

a=rand(2,2)

b=a

b[1:4].=1.0

a

Q- Why do we get different results ?
In example 1, “a” is not equal to “b”.
But in example 2, “a” is equal to “b”.

My understanding was, in example 1 “a” should also change once we change “b” in step 3.

Your second assignment in Example 1 (b = ones(size(a))) means that b no longer refers to the same matrix that a does. In Example 2 on the other hand, you are changing the elements of the matrix that b refers to, which a also refers to.

4 Likes

you can use

b .= ones(size(a))

or

b[:] = ones(size(a))

to update the whole matrix a.

1 Like

Or, more conveniently,

b .= 1.0

Both of your examples needlessly create and allocate an entire new matrix on the right hand side of the assignment.

3 Likes