最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
関数ハンドルまたはファイルへのシンボリック式の変換
は、1 つ以上の g
= matlabFunction(___,Name,Value
)Name,Value
の引数のペアで指定した追加オプションを使用して、シンボリック式、シンボリック関数もしくはシンボリック式またはシンボリック関数からなるベクトルを MATLAB 関数に変換します。前の構文で使用した入力引数の後に Name,Value
を指定できます。
シンボリック式 r
を、ハンドル ht
をもつ MATLAB 関数に変換します。この関数は Symbolic Math Toolbox なしで使用できます。
syms x y r = sqrt(x^2 + y^2); ht = matlabFunction(r)
ht = function_handle with value: @(x,y)sqrt(x.^2+y.^2)
コンマ区切りの入力を使用して、複数のシンボリック式を変換します。
ht = matlabFunction(r, r^2)
ht = function_handle with value: @(x,y)deal(sqrt(x.^2+y.^2),x.^2+y.^2)
シンボリック関数を作成し、ハンドル ht
をもつ MATLAB 関数へ変換します。
syms x y f(x,y) = x^3 + y^3; ht = matlabFunction(f)
ht = function_handle with value: @(x,y)x.^3+y.^3
File
オプションを指定して、生成した MATLAB 関数をファイルに書き込みます。既存のファイルは上書きされます。ファイルへの書き込みの際に、matlabFunction
は t0
、t1
といった名前の中間変数を使用してコードを最適化します。Comments
オプションを用いて、ファイル内にコメントを含めます。
f
から生成した MATLAB 関数を、ファイル myfile
に書き込みます。
syms x f = x^2 + log(x^2); matlabFunction(f,'File','myfile');
function f = myfile(x) %MYFILE % F = MYFILE(X) % This function was generated by the Symbolic Math Toolbox version 7.3. % 01-Jan-2017 00:00:00 t2 = x.^2; f = t2+log(t2);
コメント Version: 1.1
をファイルに含めます。
matlabFunction(f,'File','myfile','Comments','Version: 1.1')
function f = myfile(x) ... %Version: 1.1 t2 = x.^2; ...
シンボリック式を MATLAB 関数に変換して得られた関数をファイルに書き込むとき、既定では、matlabFunction
はコードの最適化を行います。この方法は、以降のこのファイルを使用した計算の簡素化および高速化に役立ちます。ただし、一部のシンボリック式やシンボリック関数では、そこからの最適化コードの生成に非常に時間がかかることがあります。コードの最適化を無効にするには、Optimize
を使用します。
シンボリック式を作成します。
syms x r = x^2*(x^2 + 1);
r
を MATLAB 関数に変換し、その関数をファイル myfile
に書き込みます。既定では、matlabFunction
は最適化されたコードを含むファイルを生成します。
f = matlabFunction(r,'File','myfile');
function r = myfile(x) %MYFILE % R = MYFILE(X) t2 = x.^2; r = t2.*(t2+1.0);
Optimize
の値を false
に設定することによって、コードの最適化を無効にします。
f = matlabFunction(r,'File','myfile','Optimize',false);
function r = myfile(x) %MYFILE % R = MYFILE(X) r = x.^2.*(x.^2+1.0);
シンボリック行列を MATLAB 関数に変換する場合、matlabFunction
は既定でこれを密行列で表します。入力シンボリック行列のほとんどの要素が 0 の場合、最も効率的な方法はスパース行列で表すことです。
3 行 3 列のシンボリック対角行列を作成します。
syms x A = diag(x*ones(1,3))
A = [ x, 0, 0] [ 0, x, 0] [ 0, 0, x]
A
を数値行列を表す MATLAB 関数に変換し、その結果をファイル myfile1
に書き込みます。既定では、生成された MATLAB 関数は、行列の各要素 (すべてゼロ要素の場合を含む) を指定する数値密行列を作成します。
f1 = matlabFunction(A,'File','myfile1');
function A = myfile1(x) %MYFILE1 % A = MYFILE1(X) A = reshape([x,0.0,0.0,0.0,x,0.0,0.0,0.0,x],[3,3]);
Sparse
を true
に設定して、A
を MATLAB 関数に変換します。これで、生成された MATLAB 関数は、非ゼロ要素のみを指定し、他のすべての要素をゼロと仮定するスパース数値行列を作成します。
f2 = matlabFunction(A,'File','myfile2','Sparse',true);
function A = myfile2(x) %MYFILE2 % A = MYFILE2(X) A = sparse([1,2,3],[1,2,3],[x,x,x],3,3);
式を MATLAB 関数に変換するとき、得られる式の入力引数の順序を指定することができます。一部の入力引数を個別の変数としてではなく、ベクトルとして指定することもできます。
シンボリック式を作成します。
syms x y z r = x + y/2 + z/3;
r
を MATLAB 関数に変換し、この関数をファイル myfile
に書き込みます。既定では、matlabFunction
はシンボリック式を変換するときに入力引数をアルファベット順に使用します。
matlabFunction(r,'File','myfile');
function r = myfile(x,y,z) %MYFILE % R = MYFILE(X,Y,Z) r = x+y.*(1.0./2.0)+z.*(1.0./3.0);
引数 Vars
を使用して、生成される MATLAB 関数の入力引数の順番を指定します。
matlabFunction(r,'File','myfile','Vars',[y z x]);
function r = myfile(y,z,x) %MYFILE % R = MYFILE(Y,Z,X) r = x+y.*(1.0./2.0)+z.*(1.0./3.0);
ここで、式 r
を、その 2 番目の入力引数がベクトルである MATLAB 関数に変換します。
syms x y z t r = (x + y/2 + z/3)*exp(-t); matlabFunction(r,'File','myfile','Vars',{t,[x y z]});
function r = myfile(t,in2) %MYFILE % R = MYFILE(T,IN2) x = in2(:,1); y = in2(:,2); z = in2(:,3); r = exp(-t).*(x+y.*(1.0./2.0)+z.*(1.0./3.0));
シンボリック式を MATLAB 関数に変換するときに、出力変数の名前を指定することができます。引数 File
を持たない (または空の文字ベクトルによって指定されたファイル パスを持つ) matlabFunction
は、関数ハンドルを作成し、Outputs
フラグを無視することに注意してください。
シンボリック式 r
および q
を作成します。
syms x y z r = x^2 + y^2 + z^2; q = x^2 - y^2 - z^2;
r
および q
を MATLAB 関数に変換し、得られた関数を、2 つの要素 name1
、name2
からなるベクトルを返すファイル myfile
に書き込みます。
f = matlabFunction(r,q,'File','myfile',... 'Outputs',{'name1','name2'});
function [name1,name2] = myfile(x,y,z) %MYFILE % [NAME1,NAME2] = MYFILE(X,Y,Z) t2 = x.^2; t3 = y.^2; t4 = z.^2; name1 = t2+t3+t4; if nargout > 1 name2 = t2-t3-t4; end
f
— MATLAB 関数に変換されるシンボリック入力MATLAB 関数に変換されるシンボリック入力。シンボリック式、シンボリック関数、シンボリック ベクトルまたはシンボリック行列として指定します。スパース シンボリック ベクトルまたは行列を変換するときには、名前と値のペアの引数 'Sparse',true
を使用します。
f1,...,fN
— N
出力の MATLAB 関数に変換されるシンボリック入力N
出力の MATLAB 関数に変換されるシンボリック入力。コンマで区切られたいくつかのシンボリック式、シンボリック関数、シンボリック ベクトルまたはシンボリック行列として指定します。
matlabFunction
は、シンボリック ベクトルまたはシンボリック行列の各要素に対する個別の出力引数を作成しません。たとえば、g = matlabFunction([x + 1, y + 1])
は 1 つの出力引数をもつ MATLAB 関数を作成しますが、g = matlabFunction(x + 1, y + 1)
は 2 つの出力引数をもつ MATLAB 関数を作成します。
オプションの引数 Name,Value
のコンマ区切りペアを指定します。Name
は引数名で、Value
は対応する値です。Name
は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN
のように、複数の名前と値のペアの引数を、任意の順番で指定できます。
matlabFunction(f,'File','myfile','Optimize',false)
'Comments'
— ファイル ヘッダーに含めるコメントファイル ヘッダーに含めるコメント。文字ベクトル、文字ベクトルの cell 配列、または string ベクトルとして指定します。
'File'
— 生成された MATLAB 関数を含むファイルへのパス生成された MATLAB 関数を含むファイルへのパス。文字ベクトルとして指定します。この生成された関数は double
型の引数を受け入れます。また、Symbolic Math Toolbox なしで使用できます。File
が空の場合、matlabFunction
は無名関数を作成します。File
が .m
で終わっていない場合は、関数は .m
を追加します。
ファイルへの書き込みの際に、matlabFunction
は t0
、t1
といった名前の中間変数を使用してコードを最適化します。コードの最適化を無効にするには、引数 Optimize
を使用します。
MATLAB 関数とコメントのファイルへの書き込みを参照してください。
'Optimize'
— 関数ファイルに書き込まれたコードの最適化を回避するフラグtrue
(既定値) | false
関数ファイルに書き込まれたコードの最適化を回避するフラグ。false
または true
で指定します。
ファイルへの書き込みの際に、ccode
は t0
、t1
といった名前の中間変数を使用してコードを最適化します。
引数 File
を持たない (または空の文字ベクトルによって指定されたファイル パスを持つ) matlabFunction
は、関数ハンドルを作成します。この場合、コードは最適化されません。Optimize
を true
に設定して強制的にコードの最適化を行おうとすると、matlabFunction
はエラーをスローします。
コードの最適化の無効化を参照してください。
'Sparse'
— スパース行列と密行列の生成を切り替えるフラグfalse
(既定値) | true
スパース行列と密行列の生成を切り替えるフラグ。true
または false
で指定します。'Sparse',true
を指定すると、生成された MATLAB 関数では、スパース数値行列でシンボリック行列を表します。ゼロの要素を多く含むシンボリック行列を変換する場合、'Sparse',true
を指定します。多くの場合、スパース行列での演算は、密行列での同じ演算よりも効率的です。
スパース行列の生成を参照してください。
'Vars'
— 生成された MATLAB 関数の入力変数または入力ベクトルの次数生成された MATLAB 関数の入力変数または入力ベクトルの次数。文字ベクトル、シンボリック変数から成るベクトル、または文字ベクトル、シンボリック変数またはシンボリック変数から成るベクトルの 1 次元 cell 配列として指定します。
指定された入力変数の数は、f
内の自由変数の数以上でなければなりません。Vars
で指定される入力変数および Outputs
で指定される出力変数には、同じ名前を使用しないでください。
既定では、シンボリック式を変換するときの順序は、アルファベット順です。シンボリック関数を変換するときは、入力引数は他の変数の前に表示され、その他の変数はアルファベット順に並べ替えられます。
生成された関数の入力引数の指定を参照してください。
'Outputs'
— 出力変数名出力変数名。文字ベクトルの 1 次元 cell 配列として指定します。
出力変数名を指定しない場合、matlabFunction
を呼び出し時に使用する名前と同じになります。個々の変数でなく式を使用して matlabFunction
を呼び出す場合、出力変数の既定の名前は、out
に番号を付けたものになります。たとえば、out3
のようになります。
Vars
で指定される入力変数および Outputs
で指定される出力変数には、同じ名前を使用しないでください。
引数 File
を持たない (または空の文字ベクトルによって指定されたファイル パスを持つ) matlabFunction
は、関数ハンドルを作成します。この場合、matlabFunction
は、Outputs
フラグを無視します。
出力変数の指定を参照してください。
g
— 数値関数への入力引数として機能する関数ハンドル数値関数への入力引数として機能する関数ハンドル。MATLAB 関数ハンドルとして返されます。
ccode
| daeFunction
| fortran
| matlabFunctionBlock
| odeFunction
| rehash
| simscapeEquation
| subs
| sym2poly
MATLAB のコマンドを実行するリンクがクリックされました。
このリンクは、Web ブラウザーでは動作しません。MATLAB コマンド ウィンドウに以下を入力すると、このコマンドを実行できます。
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.