Есть фрагмент кода R, хотите выполнить в переполнении стека

У меня есть следующий фрагмент кода R из технической статьи, который я хочу выполнить в программе на C ++, над которой я работаю.

for(i in 1:m)
w[i] <- 1/sum(exp(L-L[i]))

У меня уже есть мой вектор L и из моего понимания L-L [я] означает набор
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

Решение

Вы можете сделать что-то вроде этого:

#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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]