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

Reply via email to