我在文件中有一个Julia函数.让我们说它是下面的.现在我想将参数传递给这个函数.我试过了
julia filename.jl randmatstat(5)
Run Code Online (Sandbox Code Playgroud)
但是这会给出一个'('令牌是意外的错误.不确定解决方案是什么.如果有一个主要功能/如何使用Julia编写完整的解决方案,我也有点不知所措.例如,什么是起点/ Julia计划的切入点?
function randmatstat(t)
n = 5
v = zeros(t)
w = zeros(t)
for i = 1:t
a = randn(n,n)
b = randn(n,n)
c = randn(n,n)
d = randn(n,n)
P = [a b c d]
Q = [a b; c d]
v[i] = trace((P.'*P)^4)
w[i] = trace((Q.'*Q)^4)
end
std(v)/mean(v), std(w)/mean(w)
end
Run Code Online (Sandbox Code Playgroud)
朱莉娅没有这样的“入口点”。当您julia myscript.jl从终端调用时,您实际上是在要求 julia 执行脚本并退出。因此,它需要是一个脚本。如果您的脚本中只有一个函数定义,那么除非您稍后从脚本中调用该函数,否则它不会做太多事情。
至于参数,如果您调用julia myscript.jl 1 2 3 4,则所有剩余的参数(即在本例中为 1、2、3 和 4)将成为具有特殊名称的字符串数组ARGS。您可以使用此特殊变量来访问输入参数。
例如,如果您有一个 julia 脚本,它只是说:
# in julia mytest.jl
show(ARGS)
Run Code Online (Sandbox Code Playgroud)
然后从 linux 终端调用它会得到这个结果:
<bashprompt> $ julia mytest.jl 1 two "three and four"
UTF8String["1","two","three and four"]
Run Code Online (Sandbox Code Playgroud)
编辑:所以,根据我从你的程序中了解到的,你可能想要做这样的事情(注意:在 julia 中,函数需要在调用之前定义)。
# in file myscript.jl
function randmatstat(t)
n = 5
v = zeros(t)
w = zeros(t)
for i = 1:t
a = randn(n,n)
b = randn(n,n)
c = randn(n,n)
d = randn(n,n)
P = [a b c d]
Q = [a b; c d]
v[i] = trace((P.'*P)^4)
w[i] = trace((Q.'*Q)^4)
end
std(v)/mean(v), std(w)/mean(w)
end
t = parse(Int64, ARGS[1])
(a,b) = randmatstat(t)
print("a is $a, and b is $b\n")
Run Code Online (Sandbox Code Playgroud)
然后从您的 linux 终端调用它,如下所示:
julia myscript.jl 5
Run Code Online (Sandbox Code Playgroud)