Во-первых, я думаю, вы имели в виду y[1, 1] = 0
? Я получаю сообщение об ошибке, если я использую y [1. 1] = 0
.
Julia имеет пространственно-чувствительный синтаксис в некоторых контекстах, заметных в квадратных скобках []
. Некоторые примеры:
julia> max(1, 2)
2
julia> max (1, 2)
2
julia> [max(1, 2)]
1-element Array{Int64,1}:
2
julia> [max (1, 2)]
1x2 Array{Any,2}:
max (1,2)
julia> [1 + 2]
1-element Array{Int64,1}:
3
julia> [1 +2]
1x2 Array{Int64,2}:
1 2
В первом примере, вызов findfirst
в
x_filt [j, 1] = y [j, findfirst (y [j, :])]
интерпретируется как два разделенных пробелами элементов, findfirst
и (y [j, :])]
. Затем Юлия жалуется, что они разделены пробелом, а не запятой.
В вашем втором примере, вы не смогли обойти это с вызовом findfirst
в
temp = findfirst (y [j, :])
уже не в пространстве чувствительного контекста.
я рекомендовал бы, чтобы при написании Джулии коды, вы никогда не должны ставить пробел между именем функции и скобкой (
в вызове функции или переменной и кронштейне [
в индексации, так как код будет рассматриваться по-разному в пространстве чувствительных контекстов , Например, ваш первый пример без дополнительных пространств
for j=1:d
x_filt[j, 1] = y[j, findfirst(y[j, :])]
end
работает нормально (при условии, что вы определяете d
и x_filt
соответственно первый).
спасибо, что очень ценит. – davidj