例題
Cコードの生成器を使って, Wolframのランタイムライブラリにリンクするスタンドアロンの実行ファイルを作成することができる.
ローパスフィルタ
この例題では,ローパスフィルタ用にスタンドアロンのCの実行ファイルを作成する.
実行ファイルの構築
まず出力用にターゲットディレクトリを作成する必要がある.
| Out[1]= |  |
次に離散ローパスフィルタを実装するコンパイルされた関数を定義する:
コード生成器を使ってターゲットディレクトリ内のCのソースファイルとヘッダファイルを保存する.
| Out[5]= |  |
コードを実行するには,これを主要プログラムに埋め込む必要がある.以下は,生成されたコードを呼び出す適切なC関数である.
主プログラムをターゲットディレクトリに書き込む.
| Out[7]= |  |
これで以下のようにスタンドアロンの実行ファイルを構築することができる.これは静的な最小ライブラリでリンクされる.このことによってライブラリパスを設定することが不要になる.この実行ファイルはプラットフォームに依存しない名前を使うので,すべてのプラットフォームで使えるはずである.
オプションが
に設定されることに注意されたい.このオプションは,MathLink ライブラリがリンクの段階では含まれないようにする.
| Out[10]= |  |
このスタンドアロンの実行ファイルはそれだけで使用したり,他に渡したり,他のシステムに統合したりすることができる.
スタンドアロンのプログラムの実行
これでスタンドアロンのプログラムを実行することができる.実際のアプリケーションでは,ここで行ったように Mathematica からプログラムを実行することはない.以下は例として示す目的だけのものである.
まずいくつかの周波数成分を含む入力信号を生成する必要がある.
| Out[14]= |  |
スタンドアロンのプログラムは,以下の形式でその入力から読み込む.
nelems
elem #1
...
elem #n
dt
RC
今度は信号から適切な形式の入力ファイルを作成する.
| Out[16]= |  |
スタンドアロンの実行ファイルを実行し,結果を Mathematica にロードしなおす.
結果は Mathematica 式に変換して検証することができる。最後に実際の数を抽出することができる.
フィルタされた信号(赤)をもとの入力信号(青)と一緒にプロットする.
| Out[23]= |  |
スタンドアロンのプログラムは Mathematica から実行する必要はなく,どのような方法でも実行することができる.しかし,Mathematica からこれをテストして,その出力をこのように便利な方法で表示することができる.
最後に例題ディレクトリを削除してもよい.
スタンドアロンのリフティングウェーブレット変換
スタンドアロンのコード生成を使う例は,LiftingFilterDataのドキュメントの 「アプリケーション」 のセクションに示されている.