我有一个脚本main.jl,它打印一个简单的"Hello“字符串:
println("Hello world!")
但是,当试图像这样在终端上运行脚本时:
julia> main.jl
我知道错误:
ERROR: type #main has no field jl
我可以在网上找到的所有信息都建议像我运行脚本那样调用脚本。我已经保证我在正确的目录中--我做错了什么?
嗯,我用julia写了一个简单的“你好世界”,但我不知道如何运行代码。我试图由./nameOfMyFile.jl运行,终端返回给我说我有语法错误。
我的代码是:
println("hello world")
如果我在终端上运行julia并在那之后编写代码的话,Wich工作得很好.
这个错误类似于(,我是从葡萄牙语翻译过来的):
./hello_world.jl: line 1:syntax error close to the unexpected token `"hello world"
./hello_world.jl: line 1: `println(
我在读茱莉亚表演技巧,
在开始时,它提到了两个例子。
例1,
julia> x = rand(1000);
julia> function sum_global()
s = 0.0
for i in x
s += i
end
return s
end;
julia> @time sum_global()
0.009639 seconds (7.36 k allocations: 300.310 KiB, 98.32% compilation time)
496.84883432553846
我试图在Julia中循环一个字符串来解析它。我在一个结构中有一个DefaultDict,包含了我见过一个特定字符的次数。
@with_kw mutable struct Metrics
...
nucleotides = DefaultDict{Char, Int64}(0)
...
end
我编写了一个函数来循环字符串并增加DefaultDict中每个字符的值。
function compute_base_composition(sequence::String, metrics::Metrics)
for i in 1:sizeof(sequence)
我有一个数组A,它是整数的N-element Array{Array{Int64,1},1}。我正试图使用朱莉娅找到A中最大的数组。
例如:
A = [[1, 2], [3, 4], [5, 6, 7], [1, 2, 5, 8]]
在Python中,我只想做:max(A, key=len),但在朱莉娅,我不知道怎么做。
我所做的是:
L = []
for a in A
push!(L, length(a))
end
A[findmax(L)[2]]
谢谢!
在Python中,通常建议将代码向量化以加快计算速度。例如,如果您想要计算两个向量的内积,比如a和b,通常
代码A
c = np.dot(a, b)
比
代码B
c = 0
for i in range(len(a)):
c += a[i] * b[i]
但在朱莉娅看来,有时向量化并没有多大帮助。我认为'*和dot是矢量化版本,显式for循环是非向量化版本,并得到了以下结果。
using Random
using LinearAlgebra
len = 1000000
rng1 = MersenneTwister(1234)
a = rand(rng1, len)
rng2
我使用PyJulia在Python语言中运行Julia文件。我要运行的文件使用了一个已经安装在Julia上的包。但它仍然会给出以下错误: JULIA: LoadError: ArgumentError: Package LowRankApprox not found in current path: Run `import Pkg; Pkg.add("LowRankApprox")` to install the LowRankApprox package. 如果这个包已经安装在Julia上了,为什么还要给出这个错误呢?
我正在尝试理解Julia中的多线程行为,并注意到在Juliav1.6.3中,以下两个代码块的行为不同(我在某些script.jl中运行Atom ):
acc = 0
Threads.@threads for i in 1:1000
global acc
println(Threads.threadid(), ",", acc)
acc += 1
end
acc
和
acc = 0
Threads.@threads for i in 1:1000
global acc
acc +
主要的问题是,我的变量只有在运行代码之后才能确定(因为变量的数量是不固定的)。 在旧版本的ModelingToolkit.jl中,我使用以下代码来生成变量。 my_var = Variable(Symbol(name))(t) # name is a string 然而,它不能在最新版本中工作。这就是错误。 ERROR: Sym name is not callable. Use @syms name(var1, var2,...) to create it as a callable. 我已经检查了SymbolicUtils.jl,但没有找到其他用法。我如何解决这个问题?
我启动了REPL,然后多次使用include("./main.jl")来加速脚本加载。
在第一次运行之后,它开始给出警告:
WARNING: replacing module Lib.
WARNING: using Lib.somefn in module Main conflicts with an existing identifier.
如何抑制它?
#attempt 1: works
f(x::Int64) = x +1
my_functions = Dict("f" => f)
#attempt 2: does not work, something is wrong
new_functions = Dict("g" => g(x::Int64) = x + 5)
我是个新手,对朱莉娅来说也是新手。有没有类似于我上面的第二次尝试的方法?谢谢
BenchmarkTools文档建议将全局变量插入到基准测试表达式中。但是,它们提供的示例在运行时方面的差距似乎已经大大缩小。在中,它们有一个全局变量A = rand(1000),并将@benchmark [i*i for i in A]与@benchmark [i*i for i in $A]进行比较,并分别获得13.806 μs与1.348 μs。但是,当我现在运行该示例时,运行时间非常接近:
julia> using Statistics, BenchmarkTools
julia> A = rand(1000);
julia> median(@benchmark