Джулия: LoadError: MethodError: у `call` нет вызова, соответствующего методу (::Array{Float64,1},::Int64)
Я хочу использовать Юлию для вычисления евклидова расстояния между точками (x(i), y(i)) и (x(j),y(j)), и я использую следующие коды
C = zeros(Float64,10,10)
x = [0.0, 20.0, 18.0, 30.0, 35.0, 33.0, 5.0, 5.0, 11.0, 2.0]
y = [0.0, 20.0, 10.0 ,12.0 ,0.0 ,25.0 ,27.0 ,10.0 ,0.0 ,15.0]
Required = [10.0, 6.0 ,8.0 ,11.0 ,9.0 ,7.0 ,15.0 ,7.0 ,9.0 ,12.0]
Present = [8.0, 13.0, 4.0, 8.0, 12.0, 2.0, 14.0, 11.0, 15.0, 7.0]
for i in 1:10
for j in 1:10
C[i,j] = 1.3*sqrt((x(i) - x(j))^2.0 + (y(i) - y(j))^2.0)
end
end
И Юлия дает мне следующий результат
eLoadError: MethodError: `call` has no method matching call(::Array{Float64,1}, ::Int64)
Closest candidates are:
BoundsError()
BoundsError(!Matched::Any...)
DivideError()
...
while loading In[17], in expression starting on line 7
[inlined code] from In[17]:9
in anonymous at no file:0
Кто-нибудь может решить мою проблему? Спасибо!
2 ответа
Использование x[i]
вместо x(i)
и т.д. Последний синтаксис Matlab, он не работает в Юлии.
Ракеш прав. Кроме того, сообщение об ошибке выглядит так, что возможно перегрузить f( ... )
синтаксис вызова функции, поэтому он думает, что вы пытаетесь "вызвать" массив, и говорит, что нет соответствующего определения вызова.