2017-08-16 5 views
-1

「複雑な」要素ごとの操作を1行に書き込む方法はありますか、複数の行に分割する必要はありますか?複雑な要素単位の操作をオクテット

たとえば、私はx(xはスカラー、ベクトルまたは行列でもよい)の各要素について計算したいこの数学的関数を1 /(1 + e^-x) としましょう。

これは私が書いた作業コードです:

function r = sigmoid(x) 
    r = zeros(size(x)); 
    r = e.^(-x); 
    r = 1.+r; 
    r = 1./r; 
end 

私の質問は - 私たちは、1行にそれを簡略化することができますか?

+1

※1行でやってみませんか? – Wolfie

答えて

3

ええあなたはこれが最初のexp関数は、指数値賢明な要素を計算し、1で追加され、最終的には賢明な行列要素の上に1を分割し、あなたが何をあなたを得ることができる結果と考えてによって機能

function r=sigmoid(x) 
r=1./(1+exp(-x)) 
end 

の下にそれを行うことができます欲しいです。

+0

ありがとうございます。だからこそ作品は1つだけだから。すべてのアクションを「要素的に」宣言するのに十分であるか、またはexp(-x)が要素として賢明に定義されているためです。 2番目が真であれば、1 + exp(-x)はどのように動作し、1. + exp(-x)ではないのですか?もう一度ありがとう – Mickey

+0

@Mickey '+'は常に要素単位であり、 '。+'はありません。そして、 '1 ./(1 + exp(-x。* x))'のように複数の式を持つことができます。 – Steve

+0

@スティーブ・はいあなたは正しいです。だから、 '+'の代わりに '*'を付けると '' * ''と書かれていたはずです。結論としては、関数を1行に収めるための主な変更は、 '^'の代わりに 'exp()'を使用していますか?ありがとう! – Mickey