スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C++からGNUPLOT:リアルタイムプロット

C++からGNUPLOTを起動してリアルタイムプロットを行う方法を考えてみました。
start、pause、reread等を用いてとりあえずできました。
他にもっといい方法があると思いますが。

恥ずかしながら例題ソースを載せておきます。
計算のループが1[s]ごとに終わるものとして
そのつどプロットを更新していきます。
毎回全部書き直すのがスッキリしないですが
個人的見解としては描画がとても高速なので良しとしています。


#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>

int main(void){
int i,j;

FILE *fp2;
fp2 = fopen("output.txt", "w");//リアルタイムプロットさせるデータ
fprintf(fp2, "%d %d\n", 0, 0);
fclose(fp2);

FILE *fp1;
fp1 = fopen("test.plt", "w"); //リアルタイムプロットさせるための命令文
fprintf(fp1, "plot \"output.txt\"\n");
fprintf(fp1, "pause 0.1\n"); //0.1[s]ごとに描かせます
fprintf(fp1, "reread\n");
fprintf(fp1, "watch\n");
fclose(fp1);

system("start wgnuplot -persist test.plt");

int N=10;
for (i=0; i<N; i++)
{
   fp2 = fopen("output.txt", "w");//リアルタイムプロットさせるデータ
   for (j=0; j<i+1; j++)
   {
      fprintf(fp2, "%d %d\n", j, j);
   }
   fclose(fp2);

   Sleep(1000);// 1[s]待たせます
}

fp1 = fopen("test.plt", "w"); //リアルタイムプロットさせるための命令文

fprintf(fp1, "plot \"output.txt\"\n");
fprintf(fp1, "pause -1\n"); //起動させたgnuplotを終了させるため
fclose(fp1);

return 0;
}


スポンサーサイト

コメントの投稿

非公開コメント

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
プロフィール

uglab

Author:uglab
ソフト開発会社

【Twitter】
フォローお願いします

【You tube動画一覧】
チャンネル登録お願いします


最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
スポンサードリンク
    【スポンサードリンク】

リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。