2016-09-22 8 views
1

式として入力を要求する簡単なスクリプトを作成しようとしています。この関数を複数回計算するのは、常にユーザーの入力を要求する必要はありません。ユーザー入力としてのMATLAB方程式

私の現在のスクリプトはfを関数ハンドルとして定義して関数を2回実行していましたので、私は常に新しい方程式を求めていますが、これは望ましくありません。

f = @(x) input('f(x) = '); 
a = f(2); % requests user input 
b = f(3); % requests user input again 

さらに、このように見えます(機能しない)。

func = input('f(x) = '); 
f = @(x) func; 
a = f(2); 
b = f(3); 

ここでは、私が達成しようとしているアイデアを得るためのユーザー入力がありません。

f = @(x) x^2; 
a = f(2); 
b = f(3); 

は、私はシンボリック数学ツールボックスで解決策を見つけたと思うが、私はこのアドオンを持っていないので、私はそれをテストする/使用することはできません。

他に解決策はありますか?

答えて

4

ここでは、Symbolic Mathematics Toolboxは必要ありません。引き続きinputを使用できます。 inputのデフォルトの方法は、直接入力を受け取り、入力がMATLABの規則に従って構文的に正しいとみなされる変数として割り当てることです。それはあなたが望むものではありません。その後、匿名関数に文字列を変換するためにstr2funcを使用して2番目のパラメータとして's'オプションを使用して文字列として入力を取るしたいと思う:私は@(x)を連結しなければならなかった

func = input('f(x) = ', 's'); 
f = str2func(['@(x) ' func]); 
a = f(2); 
b = f(3); 

テイクノート入力した関数が匿名のファンクション文字列で、inputで提供されています。

実行例は

のは、私は関数を作成したいとしましょうという正方形の入力内のすべての要素:

>> func = input('f(x) = ', 's'); 
f(x) = x.^2 
>> f = str2func(['@(x) ' func]) 

f = 

    @(x)x.^2 

>> a = f(2) 

a = 

    4 

>> b = f(3) 

b = 

    9 

は私が機能する要素単位広場各要素を想定し、特別な注意してください入力に指数演算子の前にある.演算子(つまり^)は非常に重要です。

関連する問題