Main Content

ccode

シンボリック式の C コード表現

説明

ccode(f) は、シンボリック式 f の C コードを返します。

ccode(f,Name,Value) は、1 つ以上の Name,Value 引数のペアによって指定された追加オプションを使用します。

すべて折りたたむ

シンボリック式 log(1+x) から C コードを生成します。

syms x
f = log(1+x);
ccode(f)
ans =
    '  t0 = log(x+1.0);'

3 行 3 列のヒルベルト行列を作成する C コードを生成します。

H = sym(hilb(3));
ccode(H)
ans =
    '  H[0][0] = 1.0;
       H[0][1] = 1.0/2.0;
       H[0][2] = 1.0/3.0;
       H[1][0] = 1.0/2.0;
       H[1][1] = 1.0/3.0;
       H[1][2] = 1.0/4.0;
       H[2][0] = 1.0/3.0;
       H[2][1] = 1.0/4.0;
       H[2][2] = 1.0/5.0;'

生成された C コードは非ゼロの要素のみを初期化するため、C コード内で配列の全要素を直接 0 に設定することで、効率的に初期化できます。したがって、生成された C コードを使用して非ゼロ要素のみを初期化します。この手法により行列、特にスパース行列が効率的に初期化できます。

3 行 3 列の単位行列を初期化します。まず、C コード内で全要素を 0 に設定して、行列を初期化します。次に、生成された C コードを使用して非ゼロの値のみを初期化します。

I3 = sym(eye(3));
I3code = ccode(I3)
I3code =
    '  I3[0][0] = 1.0;
       I3[1][1] = 1.0;
       I3[2][2] = 1.0;'

File オプションを指定して、C コードをファイル ccodetest.c に書き込みます。ファイルへの書き込みの際に、ccodet0t1 といった名前の中間変数を使用してコードを最適化します。

syms x
f = diff(tan(x));
ccode(f,'File','ccodetest.c')
  t0 = pow(tan(x),2.0)+1.0;

Comments オプションを使用して、ファイル内にコメント Version: 1.1 を含めます。ccode はブロック コメントを使用します。

ccode(f,'File','ccodetest.c','Comments','Version: 1.1')
  /*
  Version: 1.1
  */
  t0 = pow(tan(x),2.0)+1.0;

入力引数

すべて折りたたむ

シンボリック入力。シンボリック式として指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は関係ありません。

R2021a より前では、コンマを使用して名前と値の各ペアを区切り、Name を引用符で囲みます。

例: ccode(x^2,'File','ccode.c','Comments','V1.2')

書き込みファイル。文字ベクトルまたは string として指定します。ファイルへの書き込みの際に、ccodet0t1 といった名前の中間変数を使用してコードを最適化します。

ファイル ヘッダーに含めるコメント。文字ベクトル、文字ベクトルの cell 配列、または string ベクトルとして指定します。ccode はブロックコメントを使用するため、コメントには /* または */ を含めないでください。

ヒント

  • シンボリック式から最適化された C コードまたは C++ コードを生成するには、特に大きな式の場合、関数 ccode を使用する代わりに MATLAB® Coder™ アプリを使用できます。この方法により、生成されたコードはより適切に MATLAB エコシステムに統合されます。まず、matlabFunction を使用して、シンボリック式を展開可能な MATLAB 関数に変換します。次に、MATLAB Coder アプリを使用して MATLAB 関数から C コードまたは C++ コードを生成します。例については、MATLAB Coder アプリを使用した、シンボリック式からの C コードの生成を参照してください。

バージョン履歴

R2006a より前に導入