Julia:函数

时间:2018-03-31 18:08:25

标签: matlab variables julia

我已经使用Matlab好几年了,我目前正在通过将一些m文件翻译成jl文件来学习Julia。

这是一个陡峭的学习曲线,但整体进展顺利。但是,我已经在几天内遇到了一个特定的问题。

下面是我在函数中使用的代码片段(值函数迭代)。它在Matlab中工作正常但是 - 由于我不知道的原因 - 在while循环的第二次迭代之后变量error_V为0(因此迭代停止)。

我想出了如何使用调试器,我猜测命令V = TV会导致变量V随着电视在循环内部的变化而动态更新。

(我试图了解Julia如何处理来自herehere的变量,但我还没有(还)能够完全理解Matlab和Julia在这方面的区别。)

有人可以提供帮助或提供进一步的参考吗?我猜是正确的吗?如果是,我该如何改变这种行为?如果不是,那是怎么回事?

非常感谢!

TV       = zeros(S,M)
g        = zeros(S,M)
error_V = 1

while error_V > eps_in

  for ii = 1:S
      for jj = 1:M
          U = reshape(U_matrix[ii,jj,:],1,M)
          U_v = U + beta*pi[ii,:]'*V
          TV[ii,jj], g[ii,jj] = findmax(U_v)
      end
  end

  error_V = maximum(maximum(abs.(TV - V)))
  V = TV
end

1 个答案:

答案 0 :(得分:0)

正如您所发现的那样,默认情况下,Julia赋值运算符=会在右侧创建对变量的引用。如果您想要阅读该值,则可能必须使用copy()deepcopy()分别创建浅色或深层副本。

  V = copy(TV)

  V = deepcopy(TV)