'syms' と 'solve' を含む、入力引数を持つ MATLAB 関数をコンパイルする手順は以下の通りです。
1.以下の修正コードから無名関数を生成し、入力引数 a、b、c を設定します。
syms a b c x
eqn = a*x^2 + b*x + c == 0;
s = solve(eqn)
f = matlabFunction(s)
無名関数は以下のように確認できます。
f =
function_handle with value:
@(a,b,c)[((b+sqrt(a.*c.*-4.0+b.^2)).*(-1.0./2.0))./a;((b-sqrt(a.*c.*-4.0+b.^2)).*(-1.0./2.0))./a]
2. 'syms' や 'solve' を使用する代わりに無名関数を使用します。
function sample(a, b, c)
f = @(a,b,c)[((b+sqrt(a.*c.*-4.0+b.^2)).*(-1.0./2.0))./a;((b-sqrt(a.*c.*-4.0+b.^2)).*(-1.0./2.0))./a];
y = f(a,b,c);
disp(y)
end
3. 以下のようにコンパイルと生成されたスタンドアロンアプリケーションを実行できます。
>> mcc -m sample.m
>> ! sample 1 2 3
-0.5102 - 0.8835i
-0.5102 + 0.8835i