我有一个技术专栏中的以下R代码片段,我想在我正在处理的C ++程序中执行。
for(i in 1:m)
w[i] <- 1/sum(exp(L-L[i]))
我已经有了我的向量L并且根据我的理解L-L [i]意味着一组 L [1] -L [i],L [2] -L [i]直到L [i]。对我来说这意味着:
w[0] = 1/sum(exp(L[0]-L[0]))
w[1] = 1/sum( c(exp(L[0]-L[1]),exp(L[1]-L[1])) )
等。
我不确定如何在C ++中执行它。
答案 0 :(得分:0)
您可以这样做:
#include <vector>
#include <cmath>
std::vector<double> func(const std::vector<double> &L)
{
std::vector<double> w;
double sum;
for (int i = 0, endi = L.size(); i < endi; ++i)
{
sum = 0.0;
for (int j = 0, endj = i; j < endj; ++j)
{
sum += exp(L[j]-L[i]);
}
w.push_back(1.0/sum);
}
return w;
}