我的问题是关于在 Julia 中使用广播运算符。
假设我有以下对象
M = [0.7 0.3; 0.4 0.6];
x0 = [100 100];
N=5;
y = zeros(N, size(x0)[2]);
function Markov_bling_bling(;Trans_mat, initial_states, n_ahead)
# Define useful names
M = Trans_mat; x0 = initial_states; N = n_ahead;
# Compute the N-th state
xn = x0 * M^N
return(x_n = xn)
end
(抱歉这个愚蠢的名字)
所以这个函数返回一个 1x2 向量。
所以我想将每个 xn
作为一行存储在 y
中。
在 R 中我会这样做:
y <- list()
for(t in 1:(N+1)){
y[t] = Markov_bling_bling(Trans_mat = M, initial_states = x0, n_ahead=(t-1))
}
y <- Reduce(rbind,x)
我如何在 Julia 中完成此操作?我知道我必须使用广播运算符以避免 for 循环
。
但我仍然不知道如何存储结果,我应该定义 y = []
吗? Julia 存储结果的方式是什么?
提前致谢!
最佳答案
它可以用几乎与 R 中相同的方式编写:
julia> reduce(vcat, [Markov_bling_bling(Trans_mat = M, initial_states = x0, n_ahead=(t-1)) for t in 1:N])
5×2 Matrix{Float64}:
100.0 100.0
110.0 90.0
113.0 87.0
113.9 86.1
114.17 85.83
关于function - 从 Julia 中的函数中收集值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73938865/