在 julia 中,人们可以找到(据称)对实数集合的min/minimum和max/ 的有效实现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 ×1