小编bit*_*ise的帖子

我可以在 julia 中定义一个指针吗?

如何在 Julia 中定义指向变量或列表元素的指针?我曾尝试阅读一些资源,但我对在 Julia 中使用指针感到非常困惑。

pointers language-design julia

8
推荐指数
1
解决办法
3438
查看次数

如何在julia中将对象数组传递给函数?

我想将对象数组传递给函数,并返回另一个相同大小的数组。我该怎么办?代码应该是如此之快。例如,考虑以下代码:

struct triangle
    height::Float64
    base::Float64
end

function area(height::Float64, base::Float64)
    return 0.5*base*height
end
Run Code Online (Sandbox Code Playgroud)

我想定义一个函数,该函数返回三角形数组的面积。最快的方法是什么?

julia

4
推荐指数
1
解决办法
71
查看次数

如何在两个for循环中使用break?

我写了一个函数,它生成一个离散随机变量并返回两个索引。似乎我的代码是错误的,因为返回的第一个索引总是 4。这是我的代码:

function inds(arr::Array{Float64, 2})
    probs = arr/sum(arr)
    u = rand()
    sum_prob = 0.0
    local ii, jj
    for i=1:size(arr)[1]
        for j=1:size(arr)[2]
            if sum_prob <= u < sum_prob + probs[i,j]
                ii = i
                jj = j
                break
            else
                sum_prob += probs[i,j]
            end
        end
    end
    return (ii, jj, probs[ii,jj])
end
Run Code Online (Sandbox Code Playgroud)

julia

4
推荐指数
1
解决办法
58
查看次数

当处理多个数组时,茱莉亚广播为什么不起作用?

我定义了两个结构和一个像这样的函数

struct A
    x::Float64
end

struct B
    y::Float64
end

f(a::A, b::B) = a.x*sin(b.y)
f.([A(0.1), A(0.2)], [B(1.), B(2.), B(3.)])
Run Code Online (Sandbox Code Playgroud)

但是f返回此错误:

DimensionMismatch(“无法将数组广播为相同大小”)

我该如何解决这个错误?我希望有6个元素的数组作为函数输出。

julia

3
推荐指数
1
解决办法
79
查看次数

我已经使用julia编程语言编写了路径跟踪器,但我认为它很慢

我已经更改了帖子,并发布了我的整个代码!有人可以告诉我如何优化它吗?

import Base: *, +, -, /, ^
using Images
const ? = convert(Float64, ?)

#define vector
mutable struct Vec3
    x::Float64
    y::Float64
    z::Float64
end

function +(u::Vec3, v::Vec3)
    Vec3(u.x+v.x, u.y+v.y, u.z+v.z)
end

function -(u::Vec3, v::Vec3)
    Vec3(u.x-v.x, u.y-v.y, u.z-v.z)
end

function /(u::Vec3, v::Float64)
    Vec3(u.x/v, u.y/v, u.z/v)
end

function *(u, v::Vec3)
    if typeof(u) == Float64
        Vec3(u*v.x, u*v.y, u*v.z)
    elseif typeof(u) == Vec3
        Vec3(u.x*v.x, u.y*v.y, u.z*v.z)
    end
end

function ^(u::Vec3, v::Float64)
    Vec3(u.x^v, u.y^v, u.z^v)
end

function dot(u::Vec3, v::Vec3)
    u.x*v.x + u.y*v.y + u.z*v.z
end …
Run Code Online (Sandbox Code Playgroud)

raytracing julia

2
推荐指数
1
解决办法
117
查看次数

如何在Julia中同时运行两个功能?

我正在尝试在julia中同时运行两个功能,但我不知道该怎么做。在这里您可以看到我的代码:

function area(side::Float64)
    return side*side
end

function f(n::Int64)
    mat = zeros(n,n)
    for i=1:n
        for j=1:n
            mat[i,j] = area(rand())
        end
    end
    return mat
end

function g(n::Int64)
    mat = zeros(n,n)
    for i=1:n
        for j=1:n
            mat[i,j] = area(rand()*rand())
        end
    end
    return mat
end

s1 = f(10)
s2 = g(10)
hcat(s1,s2)
Run Code Online (Sandbox Code Playgroud)

multiprocessing julia

2
推荐指数
1
解决办法
79
查看次数

如何在Julia中展平2D数组?

julia中是否有将2D数组转换为1D数组的函数?例如,我知道如何通过定义函数来实现该功能,但是我不想每次都编写它。

function flatten(Mat)
n, m = size(Mat)
flattened = zeros(m*n)
for i=1:n
    for j=1:m
        flattened[(i-1)*m + j] = Mat[i,j]
    end
end
return flattened
end
Run Code Online (Sandbox Code Playgroud)

julia

2
推荐指数
1
解决办法
107
查看次数

我们应该如何在Julia内部定义多维度结构?

我正在尝试定义类似矩阵的结构。我应该如何定义它们?例如,定义这样的矩阵:

struct Mat
    r11::Float64
    r12::Float64
    r21::Float64
    r22::Float64
end
Run Code Online (Sandbox Code Playgroud)

但是,当矩阵很大时,就不能这样写。添加,减去等后,我应如何定义多维矩阵以提高存储效率并提高存储效率。

julia

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

当我们有这么多结构时,如何定义多个调度?

如果我们有一些结构,那么使用多个调度就不是问题。但是,当我们有这么多结构时,如何使用多个调度?例如,我们有N个这样的结构:

struct An
   a::Float64
end
Run Code Online (Sandbox Code Playgroud)

和类似的功能:

f!(a::Ai) = exp(Ai.a)
Run Code Online (Sandbox Code Playgroud)

当N大时,将是头痛的。考虑到此功能简单易用!功能可能是如此之大!

julia

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

如何找到代码中最耗时的部分?

如何估计我的 julia 代码每个段的执行时间?我想在大多数情况下,只有一两个函数是最耗时的部分。

julia

0
推荐指数
1
解决办法
137
查看次数