小编War*_*ity的帖子

从映射函数返回多个值

假设我有一个名为 trig 的函数,它返回两个输出:

function trig(x)
    return(sin(x), cos(x))
end
Run Code Online (Sandbox Code Playgroud)

如果我想评估多个值的三角函数,我可以使用 map 函数:

julia> out = map(trig, (0:(pi/12):(pi/2)))
Run Code Online (Sandbox Code Playgroud)

out 是一个 7 元素数组,每个元素中都有一个包含两个元素的元组:

julia> out
7-element Array{Tuple{Float64,Float64},1}:
(0.0,1.0)
(0.258819,0.965926)
(0.5,0.866025)
(0.707107,0.707107)
(0.866025,0.5)
(0.965926,0.258819)
(1.0,6.12323e-17)
Run Code Online (Sandbox Code Playgroud)

我的问题是:解开正弦和余弦的最佳方法是什么,以便我有两个数组,每个数组有 7 个元素?是否可以在不创建多余的元组数组的情况下广播三角函数,而是直接创建我真正感兴趣的两个数组?

目前,我再次调用 map 以便从 out 中提取值以填充我想要的数组,但我认为这不是执行此操作的最佳方法:

sines = map(x->x[1], out)
cosines = map(x->x[2], out)
Run Code Online (Sandbox Code Playgroud)

出于本问题的目的,假设 trig 是一个计算量大的函数。因此,请不要给我一个需要多次评估 trig 的答案。

arrays function anonymous-function julia

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

标签 统计

anonymous-function ×1

arrays ×1

function ×1

julia ×1