2017-12-27 4 views
0

私はmatlabに新しく追加されました。 Matlabでは、関数のワークスペースから変数を取得したいと考えています。しかし、私はそれをしなかった。 たとえば、機能は次のとおりです。私は関数にX変数matlab関数可変定義

>> objfun 
Not enough input arguments. 

Error in objfun (line 5) 
Y = 20+x(1).^2 + 2*x(2).^2 -15*x(3); 

を実行したときに

function Y = objfun(x) 
Y = 20+x(1).^2 + 2*x(2).^2 -15*x(3); 
end 

は私に次のような問題を与えるのx = [4 5 7]のようなワークスペースに存在し、私は書きたくありませんさそれは機能の中にあります。それで私は何をしますか?

多分あなたのために非常に東の質問ですが、私は知らないと私はそれを作る。 私を助けることができますか?

+0

は、代わりに '' objfun(X)を入力します 'objfun'はい、それは動作しますが、その後、あなたはそれを何の入力引数 –

+0

関数。私は関数の中に書くか、コマンドウィンドウでobjfun(x)を使う必要があります。ではない? –

+0

を動作しません。だから、なぜ内部にXの書き込みがないわけではないことも可能である –

答えて

1

Matlab(またはOctave)ではscripts or functionsを使用できます。

objfunというスクリプトを作成すると、探しているものがあります。 objfunを使用して呼び出すと、ワークスペース変数xが使用されます。スクリプトはobjfun.mとして保存されます。

機能が異なります。それらは引数を持つことができますが、これらの引数はローカル変数です(関数内でのみ使用可能です)。

関数を定義する場合、関数を引数で呼び出す必要があります。

+0

ありがとう、Jgrocha、グローバル変数を使うことはできますか? –

+0

はい、グローバル変数を使用できます。しかし、内部変数を持つ関数は、はるかに安全です。 – jgrocha

関連する問題