関数を定義するときは、たとえばTEST = @(t) t.^2
とします。入力がベクトルの場合は、[1,2,3,4]
、TEST([1,2,3,4]) = [1,4,9,16]
とします。スクリプトを書くときに同時にすべての値を計算することはできますか?
定義された関数がスクリプト形式であれば同様のことができますか?私が意味することは、もし私がret = TEST(x,y,z)
という数値を知っているときに値を出力するようなTEST.mと言うと、スクリプトがあると言うと、y
とz
という数値があります。 x
,y
が固定されているとき、例えばそれぞれ0,1としたときに、z
の100の異なる値を1から100の範囲で計算したいとします。 forループを記述したり、スクリプトTEST.mの内容を変更したりせずにTEST(0,1,1:1:100)
を出力することはできますか?
このような質問をする理由は、計算時間から来ています。通常、私が持っているスクリプトは少し複雑なので、単一の値の計算には数分かかることがあります。 for-loopを出力すると、非常に時間がかかることがあります。私はparfor
ループを書いていると思いますが、計算時間はまだまだ私にとってはそれ以上のものです。私は一度に100のすべての値を計算できるのだろうかと思います。私はプログラマーの初心者です。私はこのポストの後に満足のいく答えを得ることができれば幸いです。あなたのすべての協力に感謝します。
これは、 'TEST'がどのように値を計算しているかによって決まりますが、ほとんどの場合、答えはyesです。 'x'、' y'、 'z'の使い方の計算例を提供してください。 kthxbye。 – rayryeng
一般に、TEST内の関数は簡単に表現することはできません。簡単化のために、スクリプトTEST.mが として定義されていると仮定してください。関数ret = TEST(x、y、z) ret = f(x、y、z) fはx^3 + y^2 +簡単にするためにz^4です。一般的に、関数は非常に複雑になる可能性があることを忘れないでください。特定の値に対してx、y、zを渡すと、答えが得られることに注意してください。 私のポイントは、スクリプト内の構造についての変更はありません。 x^3 + y。^ 2 + z。^ 4のように関数を書き換えないでください。ベクトルの入力が可能です。 –
私はTEST.mを呼び出す別のスクリプトを書いています。私の究極の目標は、forループを書くことなく、例えばTEST(0,1,1:1:100)の数値を得ることです。 –