私はCプログラミングの知識が限られている機械エンジニアです。シミュレーションを行うためにいくつかのコードを書き、シミュレーション結果を視覚化したいと思います。Dev-C
現在、コードの記述に使用しています。fopen
およびfprintf
コマンドを使用して、結果を含むファイルを生成します.dat
。次に、プログラムを開きGNUPLOT
、ファイルをインポート.dat
して結果をプロットします。これには時間がかかり、シミュレーションが終了するまで待たなければなりません。プロッタをに接続する簡単な方法はありDev-C
ますか?それで、プロッタはシミュレーション中にデータのプロットを開始しますか?図書館など?
6 に答える
あなたはすでに gnuplot を知っているので、プログラムから gnuplot を呼び出してデータをパイプするのが最も簡単な方法かもしれません:
FILE *gnuplot = popen("gnuplot", "w");
fprintf(gnuplot, "plot '-'\n");
for (i = 0; i < count; i++)
fprintf(gnuplot, "%g %g\n", x[i], y[i]);
fprintf(gnuplot, "e\n");
fflush(gnuplot);
OK、ファイルに書き出すときの 1 つの解決策は、ファイルにsystem()
書き出すときに単に呼び出しを行い、gnuplot を呼び出すことです。
ただし、それはファイル名を毎回変更する必要があることを意味しますが、毎回少量のデータを送信するため、そうすると正しく見えなくなるのではないかと心配しています。
http://www.gnu.org/software/libc/manual/html_node/System-Calls.html
私は gnuplot を使ったことはありませんが、このページ ( http://gnuplot-tricks.blogspot.com/ ) を見ると、gnuplot をうまく機能させるためのいくつかのトリックが見つかるかもしれません。
しかし、自分ですべてをプロットして gnuplot をスキップしない限り、そのまま待つ必要があるかもしれません。
gnuplot への C インターフェイスが役立つ場合があります。
私はC からのプロットにPLPlotを使用してきましたが、効果的で簡単であることがわかりました。クロス プラットフォーム、オープン ソースであり、豊富なプロット機能をサポートしています。開始するには、例を参照することをお勧めします。
gnuplot でのリアルタイム プロットに関して他の人が何をしたかを少し調べてみたところ、次のことがわかりました。
http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html
プロットを実行できる小さな Perl スクリプトがあり、情報をパイプするだけです。
データはファイルに書き込まれているので、それtail -f yourdata.dat
をリアルタイム プロッタにパイプすることができます。
また、stdio ファイル呼び出しを使用しているため、(を呼び出してfflush
)定期的にフラッシュする必要があります。
明らかに、シミュレーションはバックグラウンドまたは別のシェルで実行されます。そうすれば、シミュレーションを中断することなく、いつでもプロットから抜け出すことができます。
それがあなたに役立つことを願っています。