Реализация сигмоидальных кривых в C ++ - PullRequest
0 голосов
/ 30 января 2012

Я пытался реализовать кривые Сигмоида с 12 часов назад, и мне не удалось его получить.

Я использую Microsoft Visual Studio 2010.

Формула имеет вид y = 1 / (1 + exp (-e))

Тем не менее, когда я пытаюсь реализовать вкоды это не работает, почему?Могут ли какие-нибудь эксперты помочь мне, спасибо.

for(int y=0; y<bih.biHeight; y++)
{
for(int x=0; x<bih.biWidth; x++)
{   
SetPixel(hdc, (double)1/((double)1+exp(double(-x))), bih.biHeight-x, red);
}
}

1 Ответ

4 голосов
/ 30 января 2012

Ваш результат для выражения (double)1/((double)1+exp(double(-x))) находится между 0 и 1. Вы не можете нарисовать «субпиксели», не так ли?

Так что, чтобы исправить это, вам нужно умножить результат функции назначение, которое заставит его пройти через видимый диапазон.Например:

(double)1/((double)1+exp(double(-x))) * bih.biHeight
...