2

matlabのUnicodeテキストファイルからいくつかの関数を読み取り、自分の変数を使用してそこで答えを計算します。最初fopenにテキストファイルを読み取るために使用し、次にそのテキストファイルの各行を関数に変換するにはどうすればよいですか?たとえば、次のものfunc.txtが含まれます。

(x^2)-3y
sin(x+z)+(y^6)

そして私はこのようにm.fileそれを読んfunc.txtで処理するものを書く必要があります:

function func1[x,y] =  (x^2)-3y
function func2[x,y,z] =  sin(x+z)+(y^6)
4

1 に答える 1

3

前文:最終的な目的がmatlabでこれらの関数を使用することである場合(つまり、のいくつかの値についてそれらを評価することx,y,...)、私にはもっと堅牢に見える次のアプローチを提案したいと思います。

原則として、実際には、ファイルで定義されている関数を評価するためにファイルを操作する必要はありません。funct.txt


最初の問題:ファイルの各行でインライン関数funct.txtを定義する必要があります。

ファイルの最初の関数(つまり、最初の行)が文字列にfunct.txtコピーされたとしましょう。str

    str = '(x^2)-3y',

次のコマンドを使用して、関数を取得できますinline

    f1 = inline(str,'x','y');

これはあなたに与えます(matlab出力)

    f1 =
 Inline function:
 f1(x,y) = (x^2)-3y.

これで、任意の値に対して、f1それをとして呼び出すだけで使用できます。f1(x,y)x,y

2番目の問題:関数の定義を含むfunct.txt文字列を取得するには、ファイルを解析する必要があります。strそれは簡単です、あなたは関数を検討したいかもしれませんfgets

3番目の問題:の関数はfunct.txt2,3(またはそれ以上?)の独立変数に依存する可能性があります。私の知る限り、文字列を解析してそれを見つける簡単な方法はありません。したがって、すべての独立変数に依存するものとして各インライン関数を定義することができます。

  f1 = inline('(x^2)-3y','x','y','z');

ちなみに、変数zはアクティブな役割を果たしません。それでも、を呼び出すときに3番目のダミーパラメータを指定する必要がありますf1

于 2012-11-07T10:36:13.380 に答える