用C ++实现Sigmoid曲线

时间:2012-01-30 14:43:04

标签: c++ image pixel formula curve

我一直试图在12小时前实现Sigmoid曲线,我无法设法完成它。

我正在使用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 个答案:

答案 0 :(得分:4)

(double)1/((double)1+exp(double(-x)))表达式的结果介于0和1之间。您不能绘制“子像素”吗?

因此,要修复它,您需要将函数的结果乘以一个值,使其通过可见范围。例如:

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