假设我有一个整数n那只会有价值[0,10]。我应该宣布n::Integer一般对此n::Int8或者n::UInt8是简单的或n::Int64对于64位系统?请澄清新手的原因,例如风格,性能。参考:https://docs.julialang.org/en/release-0.5/manual/integers-andintegers-and-floating-point-numbers/更新参考(2021):https://docs.julialang.org/en/v1/manual/types/#man-abstract-types看答案区分两个不同的情况很重要。贮存:如果您有存储的类型
我在朱莉娅(Julia)全新。我一直在寻找一些文档[1],[2],[3]。通常,我发现它很有用,但是我发现其中有些组织缺乏。他们都采用“示例学习”的方法,但其中任何一个都有一种结构化的方式来接近该语言的显着特征。好吧,我的问题是我正在尝试构建具有一些变量的定义类型。其中,至少一个变量是一个n维数组,其中尺寸是该定义类型内部的变量。首先,我什至无法在“struct”中定义固定尺寸张量。TypeGeometrydimension::UIntcoordinates::Array{Float64}(10,2)end说:expectedType,gotArray.例如,:TypeGeometrydime
我有一些非常丑陋的代码来对包含数月子字符串的一系列字符串进行排序。因此给出:months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]test=["xxxFebxxx","xxxJanxxx","xxxAprxxx"]functionsortf(s)ix=0forminmonthsifcontains(s,m)==truereturnixendix=ix+1endreturnsize(months)[1]#incasesubstringnotfoundendsort!(test,by=sort
如果我有命令y=A*B*x在哪里A&B是大矩阵和x&y是矢量,朱莉娅·普雷格(JuliaPreform)y=((A*B)*x)或者y=(A*(B*x))?第二个选项应该是最好的选择,因为它只需要分配额外的矢量而不是大矩阵。看答案验证这种事情的最佳方法是通过@code_lowered宏:julia>@code_loweredA*B*xCodeInfo(:(beginnothingreturn(Core._apply)(Base.afoldl,(Core.tuple)(Base.*,(a*b)*c),xs)end))像许多其他语言一样,朱莉娅也y=(A*B)*x代替y=A*(B*x
我想在矩阵上执行索引操作。我知道您可以编写常规功能并在矩阵的每个条目上执行它,例如functionfoo(x::Int64)returnx*2endmyArray=[123;456]foo.(myArray)我将如何做类似的事情x*x.elementCol+x.elementrow?从本质上讲,以下代码并行:functiongoo(x::Array{Int64,2})forj=1:size(x,2)fori=1:size(x,1)x[i,j]=(x[i,j]*j)+iendendreturnxend看答案你可以写:x.=x.*indices(x,2)'.+indices(x,1)
据说朱莉娅的横环与矢量化操作一样快,甚至更快(如果使用得当)。我有两个代码。这个想法是为给定的0-1序列找到一个示例统计量,即x(在这两个示例中,我试图找到一个总和,但是有更多复杂的示例,我只是想理解一般的含义我的代码中的性能陷阱)。第一个看起来像:S=2*sum(x)-ns_obs_new=abs(S)/sqrt(2*n)pval=erfc(s_obs_new)第二个是“天真”和古典的东西:S=0foriineachindex(x)S+=x[i]endS=2*S-ns_obs_new=abs(S)/sqrt(2*n)pval=erfc(s_obs_new)使用@benchmark,我发现第一