2016-09-14 72 views
1

我一直在试图获得一个简单的sigmoid函数在matlab中工作,它似乎只适用于矩阵的第一个元素。Matlab exp只适用于第一个元素?

我的代码是:

function g = sigmoid(z) 
    g = zeros(size(z)); 
    g = 1/(1 + exp(-z)); 
end 

现在它工作正常进行简单的值,如:

>>sigmoid(0) 
ans = 0.5000 

但: `

>>k = [0; 0; 0; 0; 0]; 
>>sigmoid(k)` 

它给我:

ans = 0.5000 0 0 0 0 

看着'exp'它说它是一个元素明智的操作,所以我不知道我错在哪里。任何帮助,将不胜感激。 :)

回答

1

这里有几个问题。

  1. 你不需要只预分配g重新分配它的下一行。

  2. 您需要使用元素方面的分工./而非矩阵划分/

所以正确的功能是:

function g = sigmoid(z) 
    g = 1 ./ (1 + exp(-z)); 
end