小编Bam*_*bOo的帖子

复数的通用最大/最小函数

在 julia 中,人们可以找到(据称)对实数集合的min/minimummax/ 的有效实现maximum。由于这些概念不是为复数唯一定义的,我想知道是否已经在某处实现了这些函数的参数化版本。

我目前正在对感兴趣的数组的元素进行排序,然后取最后一个值,据我所知,这比找到具有最大绝对值(或其他值)的值要昂贵得多。

这主要是为了max在复杂数组上重现函数的 Matlab 行为。

这是我当前的代码

a = rand(ComplexF64,4)
b = sort(a,by  = (x) -> abs(x))
c = b[end]
Run Code Online (Sandbox Code Playgroud)

可能的函数调用看起来像

c = maximum/minimum(a,by=real/imag/abs/phase)
Run Code Online (Sandbox Code Playgroud)

使用提供的解决方案编辑Julia 1.5.3 中的一些性能测试

function maxby0(f,iter)
    b = sort(iter,by  = (x) -> f(x))
    c = b[end]
end

function maxby1(f, iter)
    reduce(iter) do x, y
        f(x) > f(y) ? x : y
    end
end

function maxby2(f, iter; default = zero(eltype(iter)))
    isempty(iter) && return default …
Run Code Online (Sandbox Code Playgroud)

julia

13
推荐指数
3
解决办法
274
查看次数

标签 统计

julia ×1