gnuplot を使おう。 その3 (955レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
887
(9): 2022/12/06(火)01:23 AAS
C++からデータをパイプでgnuplotに流し込むことを考えています
以下のソースはLinuxではうまくいったのですが
mingwでビルドしてWindowsで実行するとうまく行きません
(ソース分けます)

#include <string>
#include <cstdio>
#include <memory>
#include <ctime>
#include <map>
#include <cmath>
using namespace std;
using Series = map <double, double>;
static const double pi (acos (-1));
static const double MIN (0), MAX (pi * 4);
static const double INTERVAL ((MAX - MIN) / 100);
static const double PHI (0);
static const double OMEGA (pi / 8);
static const double DURATION (2);
888: 887 2022/12/06(火)01:24 AAS
(続き)
int main ()
{
string gnuplot_path ("gnuplot");
FILE fp (popen (gnuplot_path.c_str (), "w"));
if (!fp)
return -1;
fprintf (fp, "reset\n");
fprintf (fp, "set yrange [-1:1]\n");
clock_t time0 (clock ());
for (double second (static_cast <double> (clock () - time0) / CLOCKS_PER_SEC);
second < DURATION; second = static_cast <double> (clock () - time0) / CLOCKS_PER_SEC) {
Series series;
for (size_t i (0), last ((MAX - MIN) / INTERVAL); i < last; ++ i) {
const double x (MIN + i * INTERVAL);
series.insert (make_pair (x, sin (x - PHI + OMEGA * second)));
}
fprintf (fp, "set title 't = %1.2f'\n", second);
fprintf (fp, "plot '-' title 'sin' with lines\n");
for (const Series::value_type &point: series)
fprintf (fp, "%f %f\n", point.first, point.second);
fprintf (fp, "e\n");
fflush (fp);
}
pclose (fp);
return 0;
}
889: 887 2022/12/06(火)01:34 AAS
書けなくなった
890
(3): 2022/12/06(火)08:10 AAS
>>887
mingw gnuplotの5.4はpipeの扱いにバグがあります.
最近修正されたのですがリリース版修正されるのは次のリリース(5.4.6)になります.
5.2のgnuplotを使うか
892: 887 2022/12/06(火)12:05 AAS
>>890,891
有難うございます
試してみまするる
893: 887 2022/12/06(火)12:08 AAS
>>890,891
このあとエラーとgnuplotのバージョン情報を貼ろうと思ったのですが
昨夜は全然書き込めなくなりました
バージョンはご懸念の通り5.4 patchlevel 5になります
不完全な書き込みにも関わらず情報提供をありがとうございます
894: 887 2022/12/06(火)12:57 AAS
>>890,891
ビンゴでした
Windows版は5.2.8にしたら意図通り動作しました
(ちなみにLinuxで動作していたのはDebianのstableのやつで5.4.1でした
5.4系列でパイプに問題があるのはWindows版だけかもしれません)
不完全な情報からご回答を頂きまして本当に有難うございました
895: 887 2022/12/10(土)15:26 AAS
Windowsで
tail -f hoge.gp | gnuplot
のようにしたいのですが
tail -fのように使えるコマンドってありますか?
スレ違いのような気もしますが一連ってことでお聞きします
896: 887 2022/12/10(土)21:02 AAS
pwshで以下のようにして出来ました
gc hoge.gp -tail 1 -wait | gnuplot
898: 887 2022/12/11(日)23:48 AAS
>>897
有難うございます
なるほどmsys2にtailが入ってるだろうから
それでも良さそうですね
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.034s