主要内容

。

シンボリック式からの马铃薯关节生成

matlabfunction.を使ってmatlab®关关ハンドル生成〖。また,シンボリックシンボリックのに,シンボリック式のにに。またmatlabfunction.。符号数学工具箱™关关节ライセンスがあるかどうを问いんんどうを问いん。

关关ハンドル生成

matlabfunction.は,任意のシンボリック式から关键ハンドルを生成でき。

syms x y r = sqrt(x ^ 2 + y ^ 2);ht = matlabfunction(tanh(r))
ht = function_handle with%:@(x,y)tanh(sqrt(x。^ 2 + y。^ 2))

この关节,数码的な计算に。

HT(.5,.5)
ans = 0.6089.

关键词,通讯〖matlab〗。以を渡すます。

cc = [.5,3];dd = [-.5,.5];HT(CC,DD)
ans = 0.6089 0.9954

ヒント

一道のシンボリック式はMATLAB关键词关键词表すません。matlabfunction.はこれらのシンボリック式をできませんが,警告を表示しますます。これらの式によってますの。これらの式によって定义のののが行わ可性あるある,常に変换结果をし,结果として得られチェックし,结果として得たチェックし,结果として得たチェックしを行て结果を确认します。

変数の顺序の制御

matlabfunction.は,シンボリックシンボリック式からから入入をアルファベット顺に生成ししそのその,关关ハンドル生成の関数ハンドルではXyより先に书架れいいます。

ht = @(x,y)tanh((x。^ 2 + y。^ 2)。^(1./2))

関数ハンドルでの入力変数の順序を指定するには,オプションvars.をベクトルベクトルの,シンボリック配列またはシンボリックのし渡すこと示しますしますますます。

方程x y z r =√(x^2 + 3*y^2 + 5*z^2);ht1 = matlabFunction(tanh(r), 'vars', [y x z]))
ht1 = function_handle with%:@(y,x,z)tanh(sqrt(x。^ 2 + y。^ 2. * 3.0 + z。^ 2. * 5.0))
ht2 = matlabfunction(tanh(r),'vars',{'x','y','z'})
ht2 = function_handle具有值:@(x,y,z)tanh(sqrt(x。^ 2 + y。^ 2. * 3.0 + z. ^ 2. * 5.0))
ht3 = matlabfunction(tanh(r),'vars',{'x',[Y Z]})
ht3 = function_handle with value:@(x,in2)tanh(sqrt(x。^ 2 + In2(:,1)。^ 2. * 3.0 + In2(:,2)。^ 2. * 5.0))

ファイルの生成

シンボリック式からは,关键ハンドルハンドルのほか,ファイルファイル生成するもます。ファイル名を指定にはは,文件ファイル名またはファイルのパス含むのパスを渡しますますファイルパスを指定しないないないはははないは场はははははは场は场はmatlabfunction.によってこのファイルが现ー现にに作品成され。

次の例では,倍精度の入力T.Xyに対して,シンボリック行列Fのの値を计算计算するが生成されます。

syms x y t z =(x ^ 3  -  tan(y))/(x ^ 3 + tan(y));w = z /(1 + t ^ 2);f = [w,(1 + t ^ 2)* x / y;(1 + T ^ 2)* X / Y,3 * Z  -  1];matlabfunction(f,'文件','testmatrix.m')

ファイルtestmatrix.m.は,以下のコードをます。

函数f = testmatrix(t,x,y)%testmatrix%f = testmatrix(t,x,y)t2 = x。^ 2;t3 = tan(y);t4 = t2。* x;t5 = t。^ 2;t6 = t5 + 1;t7 = 1./y;t8 = t6。* t7。* x;T9 = T3 + T4;t10 = 1./t9;f = [ - (t10。*(t3-t4))./ t6,t8; t8,- t10.*(3.*t3 - 3.*t2.*x) - 1];

matlabfunction.は,多重の中间数を生成します。これこれ,“最最适化されたたとと呼ばれれ.matlabによって生成さ中间数量は,小文字のT.に自动生成さ番号を付けたもので,たとえばt32などです。中间数量は,中间式(Fの计算における,T4.T6.T8.T9.T10)を再利用するする,结果,のコードがため,结果式短くなる,コードコードが読みやすくなりなり。

入力量分数のの顺序,アルファベット顺を変更するに,vars.オプションオプション使使。例の続き,

matlabfunction(f,'文件''testmatrix.m''vars',[x y t])

は,入力分数のが异なる点别は前前ファイルファイルと等価等価なファイルをファイルししをししし

函数F = testMatrix(x,y,t)…

出力分数名称の指定

既定既定の力数目は,matlabfunction.たとえば呼び出すときに使ですととです。たとえば,幂数Fをを用してmatlabfunction.を呼び出すと

syms x y t z =(x ^ 3  -  tan(y))/(x ^ 3 + tan(y));w = z /(1 + t ^ 2);f = [w,(1 + t ^ 2)* x / y;(1 + T ^ 2)* X / Y,3 * Z  -  1];matlabfunction(f,'file','testmatrix.m','vars',[x y t])

生成さされる力量変名前もFににます。

函数F = testMatrix(x,y,t)…

个々のの数でなく式を使使使matlabfunction.を呼び出すと

syms x y t z =(x ^ 3  -  tan(y))/(x ^ 3 + tan(y));w = z /(1 + t ^ 2);f = [w,(1 + t ^ 2)* x / y;(1 + T ^ 2)* X / Y,3 * Z  -  1];matllabfunction(w + z + f,'file','testmatrix.m',...'vars',[x y t])
出力分数の既定名前は,出去に番号を付けたもの,例は次のとおり。
函数out1 = testmatrix(x,y,t)...
出力次数名称をカスタマイズするはは,输出オプションオプション使使。

Syms x y z r = x ^ 2 + y ^ 2 + z ^ 2;q = x ^ 2  -  y ^ 2  -  z ^ 2;f = matlabfunction(r,q,'文件','new_function',...'输出',{'name1','name2'})

生成された关键词,结果として名称1名称2.を返します。

函数[name1,name2] = new_function(x,y,z)...