2015-04-11 12 views
7

W oktawie, mogę zrobićJak wykonać warunkowe przypisanie w tablicach w Julii?

octave:1> A = [1 2; 3 4] 
A = 

    1 2 
    3 4 

octave:2> A(A>1) -= 1 
A = 

    1 1 
    2 3 

ale Julia, odpowiednik składnia nie działa.

julia> A = [1 2; 3 4] 
2x2 Array{Int64,2}: 
1 2 
3 4 

julia> A[A>1] -= 1 
ERROR: `isless` has no method matching isless(::Int64, ::Array{Int64,2}) 
in > at operators.jl:33 

W jaki sposób warunkowo przypisujesz wartości do określonych elementów macierzy lub macierzy w Julii?

Odpowiedz

13

Twój problem nie dotyczy przypisania, sam w sobie jest taki, że nie działa on sam: A > 1. Zamiast tego można użyć elementu A .> 1:

julia> A = [1 2; 3 4]; 

julia> A .> 1 
2x2 BitArray{2}: 
false true 
    true true 

julia> A[A .> 1] -= 1000; 

julia> A 
2x2 Array{Int32,2}: 
    1 -998 
-997 -996