25

私はCプログラミングの知識が限られている機械エンジニアです。シミュレーションを行うためにいくつかのコードを書き、シミュレーション結果を視覚化したいと思います。Dev-C現在、コードの記述に使用しています。fopenおよびfprintfコマンドを使用して、結果を含むファイルを生成します.dat。次に、プログラムを開きGNUPLOT、ファイルをインポート.datして結果をプロットします。これには時間がかかり、シミュレーションが終了するまで待たなければなりません。プロッタをに接続する簡単な方法はありDev-Cますか?それで、プロッタはシミュレーション中にデータのプロットを開始しますか?図書館など?

4

6 に答える 6

19

あなたはすでに 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);
于 2013-01-14T12:48:43.960 に答える
4

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 インターフェイスが役立つ場合があります。

http://ndevilla.free.fr/gnuplot/

于 2013-01-14T02:39:50.257 に答える
4

私はC からのプロットにPLPlotを使用してきましたが、効果的で簡単であることがわかりました。クロス プラットフォーム、オープン ソースであり、豊富なプロット機能をサポートしています。開始するには、例を参照することをお勧めします。

于 2013-01-14T05:05:36.520 に答える
0

gnuplot でのリアルタイム プロットに関して他の人が何をしたかを少し調べてみたところ、次のことがわかりました。

http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html

プロットを実行できる小さな Perl スクリプトがあり、情報をパイプするだけです。

データはファイルに書き込まれているので、それtail -f yourdata.datをリアルタイム プロッタにパイプすることができます。

また、stdio ファイル呼び出しを使用しているため、(を呼び出してfflush)定期的にフラッシュする必要があります。

明らかに、シミュレーションはバックグラウンドまたは別のシェルで実行されます。そうすれば、シミュレーションを中断することなく、いつでもプロットから抜け出すことができます。

それがあなたに役立つことを願っています。

于 2013-01-14T02:47:19.493 に答える