小编Rez*_*lan的帖子

在Julia中查找数组中项的第一个索引

在Julia中找到数组中某个项的第一个索引的最简单方法是什么?

arrays julia

15
推荐指数
2
解决办法
8760
查看次数

如何在朱莉娅写一个并行循环?

我有以下Julia代码,我想并行化它.

using DistributedArrays

function f(x)
    return x^2;
end
y = DArray[]
@parallel for i in 1:100
    y[i] = f(i)
end
println(y)
Run Code Online (Sandbox Code Playgroud)

输出是DistributedArrays.DArray[].我希望y的值如下:y=[1,4,9,16,...,10000]

parallel-processing julia

15
推荐指数
2
解决办法
5208
查看次数

在Julia-Lang中声明Enum数据类型的不同方法

使用@enum唯一的方式声明Julia Enum数据类型?如果是这样的话?

julia

11
推荐指数
2
解决办法
5693
查看次数

朱莉娅的直方图计算

请参阅julia-lang文件:

hist(v [,n])→e,计数

计算v的直方图,可选地使用大约n个区间.返回值是范围e,其对应于箱的边缘,并且计数包含​​每个箱中的v的元素的数量.注意:Julia不会忽略计算中的NaN值.

我选择了一个样本范围的数据

testdata=0:1:10;
Run Code Online (Sandbox Code Playgroud)

然后使用hist函数计算1到5个bin的直方图

hist(testdata,1) # => (-10.0:10.0:10.0,[1,10])
hist(testdata,2) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,3) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,4) # => (-5.0:5.0:10.0,[1,5,5])
hist(testdata,5) # => (-2.0:2.0:10.0,[1,2,2,2,2,2])
Run Code Online (Sandbox Code Playgroud)

如你所知,当我想要1个bin时,它会计算2个bin,当我想要2个bin时,它会计算3个.

为什么会这样?

histogram julia

7
推荐指数
2
解决办法
3215
查看次数

Julia-Lang匿名vs传递参数的命名函数行为

请参阅Julia doc:

在Julia中,函数的所有参数都通过引用传递.

当我从匿名函数中获取Float64参数的内存地址时,它看起来是正确的.但对于命名函数来说并非如此.

test = function (a::Float64)
    println(pointer_from_objref(a));
end
# => (anonymous function)
function test1(a::Float64)
    println(pointer_from_objref(a));
end
# => test1 (generic function with 1 method)
value=0.0;
println(pointer_from_objref(value))
# => Ptr{Void} @0x00007fe797c5c020
test(value)
# => Ptr{Void} @0x00007fe797c5c020
test1(value)
# => Ptr{Void} @0x00007fe799e83960
Run Code Online (Sandbox Code Playgroud)

正如@Gnimuc所提到的,Julia-Lang Doc还有另一段解释了Argument Passing Behavior

Julia函数参数遵循有时称为"pass-by-sharing"的约定,这意味着值在传递给函数时不会被复制.函数参数本身充当新的变量绑定(可以引用值的新位置),但它们引用的值与传递的值相同.

这种"传递共享"行为与上述代码之间是否存在任何关系?

pointers julia

7
推荐指数
1
解决办法
358
查看次数

有没有办法在julia-lang中构建包依赖树?

使用npm list将显示已安装的包,版本和关系的树:

在此输入图像描述

虽然Julia包管理是不同的(例如,通常不存在包的重复副本),但有没有办法:

  • 知道为什么要安装一个包裹?
  • 或者构建一个包依赖树.

julia

7
推荐指数
1
解决办法
673
查看次数

如何在c ++中使用julia语言(visual studio)

是否可以在c ++中使用julia语言?julia语言是否提供了一些库?

现在,我正在尝试在我的c ++项目中使用julia语言的一些功能.这可能吗?我能做什么?

提前致谢.

c++ visual-studio julia

6
推荐指数
1
解决办法
2540
查看次数

在Julia中编写模块finalize方法的正确方法是什么?

我正试图找到在Julia中使用终结器的正确方法

请参阅Julia文档:

终结者(x,函数)

当没有程序可访问的x引用时,注册要调用的函数f(x).如果x是位类型,则此函数的行为是不可预测的.

首先,我使用TestModule.jl生成了一个TestModule标准包

#in TestModule.jl
module TestModule
end
finalizer(TestModule,(t)->println("fin"))
Run Code Online (Sandbox Code Playgroud)

还有一个runtest.jl

#in runtest.jl
using Base.Test
using TestModule
Run Code Online (Sandbox Code Playgroud)

然后我尝试测试Package但是在测试通过时我收到了ERROR:

julia> Pkg.test("TestModule")
INFO: Testing TestModule
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF …
Run Code Online (Sandbox Code Playgroud)

julia

6
推荐指数
1
解决办法
357
查看次数

方法与嵌套类型限制不匹配

我有这个简单的方法来计算向量集合的加权平均值

function meanw{T <: Number}(x::AbstractArray{AbstractVector{T}, 1}, w::AbstractVector{T})
  x? = sum(x .* w)
  x? = map(z -> z - x?, x)
  x?, x?
end
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时,调度与我的方法不匹配.

ERROR: `meanw` has no method matching meanw(::Array{Array{Float64,1},1}, ::Array{Float64,1})
Run Code Online (Sandbox Code Playgroud)

我怀疑在涉及嵌套时我误解了如何使用类型限制.我应该如何重写此功能以匹配我的收藏?

PS

我知道矢量和数组是相同的,但差异化使得函数的使用更加清晰.

dispatch julia

5
推荐指数
1
解决办法
323
查看次数

什么是使用pointer_from_objref()和Ref()的正确方法?

只需从文档中复制:

pointer_from_objref(object_instance):

生成的Ptr的存在不会保护对象不被垃圾收集,因此您必须确保在Ptr将被使用的整个时间内对象保持引用.

参考文献{T}:

安全引用类型T数据的对象.此类型保证指向正确类型的有效Julia分配内存.只要引用了Ref本身,就可以保护底层数据不被垃圾收集器释放.

当作为ccall参数传递时(作为Ptr或Ref类型),Ref对象将转换为指向它引用的数据的本机指针.

没有无效(NULL)参考.

我想传递一个指向ac函数的指针.根据文档,似乎使用pointer_from_objref并不总是安全的,所以我尝试使用Ref:

# test 1
bufferID = convert(GLuint, 0)
glGenBuffers(1, pointer_from_objref(bufferID))
@show bufferID

out => bufferID = 0x00000001    # ok

# test 2
bufferID = convert(GLuint, 0)
glGenBuffers(1, Ref(bufferID))
@show bufferID

out => bufferID = 0x00000000    # unexpected result

# test 3
bufferID = GLuint[0]
glGenBuffers(1, Ref(bufferID))
@show bufferID[]

out => bufferID[] = 0x00000001  # ok
Run Code Online (Sandbox Code Playgroud)

结果显示,test 2没有任何错误会产生意外结果,但test 3在转换bufferID为数组时工作正常.

我的问题是为什么test 2 …

pointers julia

5
推荐指数
1
解决办法
500
查看次数