2

我正在尝试在 scilab 上使用此代码绘制 sigmoid 函数,但我得到的结果不是来自等式。我的代码有什么问题?

x = -6:1:6; y = 1/(1+%e^-x)

y =

0.0021340  
0.0007884  
0.0002934  
0.0001113  
0.0000443  
0.0000196  
0.0000106  
0.0000072  
0.0000060  
0.0000055  
0.0000054  
0.0000053  
0.0000053  

http://en.wikipedia.org/wiki/Sigmoid_function

太感谢了

4

3 回答 3

2

尝试:

-->function [y] = f(x)
-->  y = 1/(1+%e^-x)
-->endfunction

-->x = -6:1:6;

-->fplot2d(x,f)

产生: 替代文字

于 2010-09-18T09:43:29.730 回答
1

您的方法计算 (1+%e.^x) 向量的伪逆。您可以通过执行来验证: (1+%e^-x)*y

以下是您可以做的两件事:

x = -6:1:6; y = ones(x)./(1+%e.^-x)

这给出了您需要的结果。这将按预期执行逐元素除法。

另一种方法是:

x = -6:1:6    
deff("z = f(x)", "z = 1/(1+%e^-x)") 
// The above line is the same as defining a function- 
// just as a one liner on the interpreter.
y = feval(x, f)

两种方法都会产生相同的结果。

于 2010-09-22T12:33:36.007 回答
0

使用 Scilab ≥ 6.1.1,只需

x = (-6:1:6)';
plot(x, 1./(1+exp(-x)))
于 2022-02-12T13:41:04.463 回答