假设我有一个名为 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 的答案。