2011-11-11 28 views
3

ここに誰もがiOSでgnuplotを使った経験がありますか?私は、iOSデバイス上に科学計算アプリケーションを開発し、プロットエンジンとしてgnuplotを使いたいと考えています。私が始めることができる良いチュートリアルはありますか?gnuplot with iOS

答えて

3

私は同じ一般的な質問をしています。簡単なgoogle検索では、gnuplotを使用しているような次のアプリを紹介しました。

http://itunes.apple.com/us/app/icas-workstation-class-scientific/id394637176?mt=8

私は彼らのウェブサイトへの道をたどっ:

http://alsoftiphone.com/iCAS/

私はそれについてのそれらに連絡、および/場合、私は応答を得るとき私がフォローアップします。


応答:

こんにちは、

あなたが適切に指摘してきたようにアプリではgnuplotを埋め込む際に、いくつかの合併症は、あなたが動的に作成して処分するつもり場合は特に、ありますそれの。つまり、gnuplot(v4.4.0は私が使っていたものです)は、それが終了時に解放されると仮定しているため、おそらく割り当てられるメモリを明示的に解放しません。スタンドアロンアプリケーションです。これはもちろん、メモリリークを引き起こします。同様に、gnuplotは出力ファイル記述子を明示的に閉じることもありません(これは私が知る限りstdoutに設定されています)。また、main関数が終了したときにmultipotモードをクリアしません。問題があるのは、次回gnuplotを組み込みの状況で呼び出すときに、その後に呼び出されたときにグローバル変数が多重モードを反映するためです。

幸いにも、私はすでにそれらを特定していますので、私のようにそれらを狩る必要はありません。残念ながら、私は自分のプロジェクト用のライブラリを作成しませんでしたが、gnuplotソースコードに関連する変更が必要です。

のための他のブロックの終わりにplot.cライン#615、「もし(インタラクティブ& &用語!= 0)」あなたはまた、いくつかに変更することになるでしょうmain()関数(の条件ブロック適切なエントリ関数名):

// Free replot_line 
    if (replot_line != NULL) 
    { 
     free(replot_line); 
     replot_line = NULL; 
    } 

plot.cライン#680、main()関数の最後で "EXIT_STATUSを返す" の前に:

// Free replot_line if it was allocated 
if (replot_line != NULL) 
    free(replot_line); 

// Clear multiplot mode, if it was active 
if (multiplot) 
    term_end_multiplot(); 

// Close current file 
if (gpoutfile) 
    fclose(gpoutfile); 

他の問題は、gnuplotが書かれていることですstdinとstdoutを使用するように私のアプリケーションのために私はgnuplotとの間のインターフェイスとしての役割を果たすために、私自身の適切なファイル記述子を使用します。これは実装固有のものなので、私は自分自身の特定の変更を列挙しませんが、stdinとstdoutのインスタンスのgnuplotソースを調べ、必要に応じてそれらを置き換える必要があります。

また、config.hで#define NO_GIHを使用することもできます。

それ以外の場合は、おそらくあなたのアプリケーションの適切なgnuplotターミナルタイプをハードコードする必要があります(私はアプリケーションでSVGを使用しました)。

こちらがお役に立てば幸いです。

よろしく、

アントニオLagana