2016-09-14 70 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