我一直试图在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);
}
}
答案 0 :(得分:4)
(double)1/((double)1+exp(double(-x)))
表达式的结果介于0和1之间。您不能绘制“子像素”吗?
因此,要修复它,您需要将函数的结果乘以一个值,使其通过可见范围。例如:
(double)1/((double)1+exp(double(-x))) * bih.biHeight