我想执行以下代码,当我在Windows 10上将每一行输入到我的朱莉娅控制台时,它都能很好地工作,但是由于LinearAlgebra.Adjoint{Float64,Array{Float64,2}}类型不匹配而抛出一个错误(我随后的代码期望Array{Float64,2})。
这是代码:
x = [0.2, 0.1, 0.2]
y = [-0.5 0.0 0.5]
fx = x * y
fy = fx'
return fx::Array{Float64,2}, fy::Array{Float64,2}
有一个TypeError,因为fy似乎是LinearAlgebra.Adjoi
在Julia中,什么等同于Python的getattr()?我尝试了下面的元编程代码,但它只能在全局范围内工作,而不能在函数范围内工作。
type A
name
value
end
a = A("Alex",1)
for field in fieldnames(a)
println(eval(:(a.$field)))
end
这将打印出来:
Alex
1
但是,如果上面的代码在一个函数作用域内,那么它就不会工作
function tmp()
a = A("Alex",1)
for field in fieldnames(a)
在下面的代码中,我有一个复合类型,在我的实际代码中,有几个字段是矩阵。在这个例子中,只有1。当我试图构造复合类型时,我一直会得到堆栈溢出。下面是代码示例:
struct Tables
eij::Array{Float64,2}
end
Tables(eij::Array{Float64,2}) = Tables(eij) # works if this is commented out
x = 5 # arbitrary matrix dimension
e_ij = Array{Float64,2}(undef,x,x)
for i=1:x
for j=1:x
我之前问过一个类似的问题,julialang: can (should) this type error be caught at compile time?,我想提出一个相关的问题。 function somefun()
for i = 1:10e10; sin(i); end # a time-consuming loop
nonexist_fun() # call to a non existing function => error
end 这里调用了一个不存在的函数nonexist_fun()并导致错误。不幸的是,
我正在构建一个数据框架,在其中一些列中,创建它们的明显方法涉及一个多步骤的过程。我想以具体和简洁的方式创建一个带有eltype Union{缺失,T}的列。然后,我可以使用多步过程填充该列(并在适当的情况下完成后不允许)。最干净的方法是什么?
我想做一些类似df[!, :col] :: Vector{Union{Int64, Missing}} .= missing的事情,但这给了"ArgumentError: column name :col not found in the data frame; ..."
如果我试着做df[!, :col] .= fill(missing
我编写了一个估计pi的函数picircle()。
现在,我想为N个值绘制这个函数。
function Plotpi()
p = 100 # precision of π
N = 5
for i in 1:N
picircle(p)
end
end
3.2238805970149254
3.044776119402985
3.1641791044776117
3.1243781094527363
3.084577114427861
现在我不知道如何绘制函数,我尝试了plot(PP()),但是它没有工作
在这里,我定义了皮环:
function picircl
我想在Julia中使用一个对象,它可以由一个函数初始化。它就像C中的一个函数指针。
我的目标是:
我有一个朱莉娅剧本和一个茱莉亚模块。
在这个脚本中,我有一个数组。
模块需要能够向这个数组中添加一些元素。
#script
liste = Int64[]
function addElement(e)
liste.push(e)
end
include("path/mymodule.jl")
myModule.setAddElementFunc(addElement)
myModule.execute() # error: wrong number of parameter
Julia中的代码如下: function seq(n)
if n<2
return BigInt(2)
else
return 1/(3-seq(n-1))
end
end
# and then run
[seq(n) for n=1:10] 复制递归序列Un = 1/(3-U(n-1)),其中U1=2和它有效。但是有人能给我解释一下它是怎么工作的吗?对于每个n,它是否计算它之前的每一项,或者"return“是否将其存储在某个地方,然后在需要时再次调用,这样它就不必每次都计算n的每一
这是可行的: struct Comic
endpoint::String
end
function Comic(id::Int)
url = "https://xkcd.com/$id/info.0.json"
Comic(url)
end
Comic(1) 它返回Comic("https://xkcd.com/1/info.0.json")。 这不起作用: struct Comic
endpoint::String
end
function Comic(id::String)
url = "https:
我想从我的python代码中调用一个julia脚本。pyjulia没有问题,但是如果我把它设计成一个类,就会有一个问题。我想初始化julia并在init函数中包含一个脚本。下面的例子是,我不能在函数中使用self.jul。它引发一个错误,因为self.jul没有函数"myJulFuntion“。我确信它在朱莉娅脚本中,因为如果我把东西从init移到callJulFunc并调用jl.myJulFuntion(params),它就能工作。
有什么想法吗?
问题是,
import julia
julia.Julia()
from julia import Main as jl
class
如果我将一些匿名函数a(x)和b(x)定义为
a = x -> x^2
b = x -> 2x
对递归问题来说,将它们相加在一起是有帮助的,比如在某个循环的持续时间内:
for i=1:5
a = x -> a(x) + b(x)
end
其中的目标是在内部将每个循环迭代表示为
a = x -> x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x
a = x -> x^2 + 2x + x^2 + 2x + x^2 + 2x
...
但是,这会失败,并返回一些错误。我认为这是因为调用新的a(x)被解释为:a(2) = 2 -&
是一种新的统计编程语言,它声称比竞争语言的性能要好得多。我在试着证实这一点。Julia有一个用Python语言编写的性能测试:
我不能让它和pypy一起工作。也许这是由于numpypy与numpy的不兼容,但我还不能确定这一点。我遵循了ImportError的建议"...or just write 'import numpypy' first in your program...",但我得到了另一个ImportError:"No module named numpy.linalg"
我几乎没有使用Python的经验,我正在寻找一个我可以运行的完整
我正在尝试编写一个接受参数的函数,该参数可以是元组或数组。例如,这是可行的:
julia> temp(x::Union{Vector{Int64},NTuple{4,Int64}}) = sum(x)
temp (generic function with 1 method)
julia> temp((3,1,5,4))
13
julia> temp([3,1,5,4])
13
另一方面,当我尝试使用未指定长度的元组时,它对数组失败:
julia> temp(x::Union{Vector{Int64},NTuple{N,Int64}}) where N = sum
我想在Julia中编写一个函数,它可以接受任何复合类型,并漂亮地打印出嵌套成员的名称、类型和值,我想把这个函数放在一个包中,供社区使用。 假设一个用户有以下结构: struct House
value::Int32
rooms::Int32
number::Int32
end
struct Street
name::String
houses::AbstractArray{House}
end
struct Town
name::String
streets::AbstractArray{Street}
end
town = To
我在学朱莉娅,这是我搞不懂的东西。
Case1:我启动了朱莉娅控制台,用数字10重写了默认的sqrt函数,所以现在这个函数不能工作了。让我感到惊讶的是,在R中,即使我们覆盖一个函数,它也能工作,因为方法分派。显然,朱莉娅的做法是不同的,这是可以的。但现在我无法恢复到它的自然状态。我必须重新启动朱莉娅,使它(sqrt)再次工作。
julia> sqrt = 10
10
julia> sqrt(5)
ERROR: MethodError: objects of type Int64 are not callable
Stacktrace:
[1] top-level scope a
我是元编程的新手,所以我可能不明白这一点。我认为,@nloops宏在Base.Cartesian中的目的是在未知维度的情况下,对任意数量的嵌套for循环进行编码。在该模块的文档中,给出了以下示例:
@nloops 3 i A begin
s += @nref 3 A i
end
评估结果为
for i_3 = 1:size(A,3)
for i_2 = 1:size(A,2)
for i_1 = 1:size(A,1)
s += A[i_1,i_2,i_3]
end
end
end
在这里,数字3是先验已知的。然而
在Julia标准库中有一个Markdown模块。然而,在中并没有说明如何在这个标记中包含普通的html。例如
using Markdown
a = Markdown.parse("This is *important* text with <i>html</i> in it");
# parsed as
Markdown.Paragraph(Any["This is ", Markdown.Italic(Any["important"]), " text with <i>html</i> i
首先,我不得不说我对并行计算完全陌生(对计算机科学几乎一无所知),所以我对“工作者”或“进程”之类的东西的理解非常有限。但是,我确实有一个关于运行一个简单的for循环的问题,该循环可能在并行迭代之间没有依赖关系。
假设我想要执行以下操作:
for N in 1:5:20
println("The N of this iteration in $N")
end
如果我只是想让这些消息出现在屏幕上,而出现的顺序并不重要,那么如何在Julia 0.6中实现这一点,并在Julia 0.7 (因此是1.0)中供将来参考呢?
在这个简短的序列中,用户创建一个函数userfunc(),但随后想要更新第一个定义来做一些不同的事情。然而,programfunc()已经编译了第一个版本,并继续使用它。
userfunc(str, n) = str ^ n
userfunc("hello", 3)
"hellohellohello"
# program makes use of the user's function
programfunc(func, a, b) = func(a, b)
programfunc(userfunc, "hello", 3)
当我尝试对Julia文档(v1.0.3)中的示例运行inv()函数时,我得到一个错误。代码如下(直接来自文档): julia> M = [2 5; 1 3]
2×2 Array{Int64,2}:
2 5
1 3
julia> N = inv(M)
ERROR: MethodError: objects of type Array{Float64,2} are not callable
Use square brackets [] for indexing an Array. 它确实适用于pinv(),但我得到了一些非常小的浮点值。你知道为什么我不能让inv()在这个极
我试图在Julia中读取一个泡菜文件,这个文件最初是用python创建的。以下是我所做的:
f3=open("filename.pickle");
r3 = pickle.load(f3)
这将返回以下内容:
PyObject <41302x1425 sparse matrix of type '<class 'numpy.float32'>'
with 1602890 stored elements in Compressed Sparse Row format>
如何访问矩阵元素?
假设我在朱莉娅中有一个稀疏
我已经阅读了很多Julia文档(版本0.4),并且在加载Julia文件时仍然有问题。这看起来应该很简单。那么,简单明了地说,我们应该如何直接使用当前代码中其他文件中的Julia代码呢?还有,作为一个相关的,有益的奖励,是否有任何历史或语言设计的决定,理解,将照亮的情况?
我用的是0.4。
如果您想了解问题的具体情况,下面是一些我正在处理的问题:
第一
使用REPL,我想使用我在另一个文件中编写的一些函数。据推测,我应该能够像这样加载这样的文件:
julia> using Foobar
不管我做什么,这都给了我ArgumentErrors。在尝试使用之前,我已经尝试过包括它:
julia
主要的问题是,我的变量只有在运行代码之后才能确定(因为变量的数量是不固定的)。 在旧版本的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,但没有找到其他用法。我如何解决这个问题?