2017-05-01 13 views
0

複数の関数ファイルにコードがありますが、これらの関数への入力はinputfile.m(スクリプトファイル)という1つのファイルに格納されています。入力。これらの値は、degree_eq.m(ファンクションファイル)という名前の複数のファンクションファイルへの入力として機能します。複数の関数ファイルに格納されている変数と入力ファイルをリンクする

どのように実行するたびに、関数ファイルがinputfile.mから必要な入力を受け取るようにコードを書くことができますか。

+0

あなたのユースケースを実証する最小限の例を提供することができます。 – m7913d

+0

インプット.mの次の値はa = 5に格納されます。 b = 8; c = 10;以下に述べる方法で私は自分の記憶された値を使用しなければならない。 – Vasanthakumar

答えて

1

入力が2つ(inputfile)、1つが機能するところ(do_stuff)の2つの機能があるとします。

function [a,b,c] = inputfile() 
%define your constants 
a=10; 
b=100; 
c=8.3; 


function z = do_stuff() 
[a, b, c] = inputfile() %takes the inputs from inputfile.m 
z = a*c - b; 
1

matlab変数がスコープ外で永続的であるという事実を利用できます。入力ファイルに定義された6つの定数a、b、c、d、e、fがあるとします。だから何行うことができることは、

inputfile 
degree_eq1(a,b,c) 
degree_eq2(c,d,e) 
0

(Nirvedh Meshramとqbzenkerの答えを組み合わせる)第三のアプローチのようなものになるだろうtop.mと呼ばれるトップスクリプトを書くことはあなたのMATLAB関数の内部で入力スクリプトを呼び出すことです。

利点があなたから必要に応じて、またはあなたの入力スクリプトで指定されたパラメータを指定する必要がないことですが、必要な入力が明示されていないため、これは、あまりにも不利です。したがって、エラーが発生しやすくなります。私は多くの入力変数に対してこのアプローチを推奨します。

inputfile.m

a = 5; 
b = 8; 
c = 10; 

degree_eq.m代替として

function d = degree_eq() 
    inputfile; 
    d = a + b + c; 
end 

は、あなたが使用する入力ファイルを指定することができます。

degree_eq.m

function d = degree_eq(inputFilename) 
    eval(inputFilename); 
    d = a + b + c; 
end 

と、次のようにそれを呼び出す:

degree_eq('inputfile'); 
関連する問題