No worries, glad I could answer your question. On Wed, Dec 10, 2014 at 4:20 PM, Tudor Berariu <[email protected]> wrote:
> Thank you for the answer! I'm sorry about cross-posting. It won't happen > again! > > On Wednesday, December 10, 2014 11:08:53 PM UTC+2, Stefan Karpinski wrote: >> >> please don't cross-post questions in multiple places – it's the same >> people reading and answering in both places: http://stackoverflow. >> com/questions/27410076/multiple-assignment-in-multidimensional-array >> >> On Wed, Dec 10, 2014 at 4:06 PM, Stefan Karpinski <[email protected]> >> wrote: >> >>> The classic vectorized Matlab approach is to use sub2ind: >>> >>> julia> X[sub2ind(size(X), ind[:,1], ind[:,2])] = 2 >>> 2 >>> >>> julia> X >>> 4x4 Array{Float64,2}: >>> 2.0 0.0 0.0 0.0 >>> 0.0 2.0 0.0 0.0 >>> 0.0 0.0 2.0 0.0 >>> 0.0 0.0 0.0 0.0 >>> >>> >>> Of course, in Julia you also have the option of just using a for loop: >>> >>> for i = 1:size(ind,1) >>> X[ind[i,1],ind[i,2]] = 2 >>> end >>> >>> >>> This is more efficient and arguably clearer. >>> >>> On Wed, Dec 10, 2014 at 3:45 PM, Tudor Berariu <[email protected]> >>> wrote: >>> >>>> Hello! >>>> >>>> I have a 4x4 array of zeros. >>>> >>>> julia> X = zeros(4,4) >>>> 4x4 Array{Float64,2}: >>>> 0.0 0.0 0.0 0.0 >>>> 0.0 0.0 0.0 0.0 >>>> 0.0 0.0 0.0 0.0 >>>> 0.0 0.0 0.0 0.0 >>>> >>>> I have an 2xN array containing indices of elements in X that I want to >>>> assign a new value. >>>> >>>> julia> ind = [1 1; 2 2; 3 3] >>>> 3x2 Array{Int64,2}: >>>> 1 1 >>>> 2 2 >>>> 3 3 >>>> >>>> What is the simplest way to assign a value to all elements in X whose >>>> indices are rows in ind? (something like X[ind] = 2.0). >>>> >>>> julia> X >>>> 2.0 0.0 0.0 0.0 >>>> 0.0 2.0 0.0 0.0 >>>> 0.0 0.0 2.0 0.0 >>>> 0.0 0.0 0.0 0.0 >>>> >>>> >>> >>
