2024年10月11日

一日一項目 Matplot++ってのがあるんですわ なあぁにぃぃみつけちまったな

  Python matplotlibはグラフ描画が便利である。それと似たような使い方でグラフ描画が出来るのが Matplot++である。matplotcpp-h というのもある。これはヘッダーオンリーライブラリとかいう取る。Pyhthonのmatplotlibをc++から使うらしいのである。詳しくは知らんのである。
Matplot++は実は gnuplotを使うのである。c++で数値計算して結果をText Fileに出してwgnuplotで表示すればよいのである。手動でやるばあいには。あるいはc++の記述のなかにwgnuplotの起動とコマンドを用意すればビルド実行でグラフまで出るのである。

そういう手法とは別にMatplot++を使うとmatplotlibのような使い方が出来て便利なのである。そして、C++14では使えないのだよよん。ワタクシはVisualStudio2022 CommunityをC++20に設定して使うのである。
Matplot++のインストールにはMicrosoftが提供している VCpkgを使うのである。これは例えばPythonであれば、
>pip install hagehage    という感じでモジュールのhagehageをインストールしますね、似たように
>vcpkg install hagehage  と叩くとhagehageがインストールできるのである。便利である。

以上、前フリね。Matplot++の例題をGithubからDLして動作を見ていてですね、次の記述があったのである。

  std::vector<double> y = transform(x, [T](auto x) { return plank_black(x,T); });
plank_black(x,T) --- これはワタクシが書いた関数である。問題は
(x, [T](auto x) ここの x のところである。
transformの説明を探して、あるいはCopilot先生やchatGPT3.5先生に訊くと
(x.begin(), x.end(), ) のように範囲指定しているのである。この範囲指定が無くても動作するのはどうしてだ? とワタクシは疑問に思ってCopilot先生に訊いたのである。
するとCopilot先生は、それは不思議ですね・・・・と回答したのである。そこでワタクシは感づいたのである。標準のC++ライブラリではないのだな、と。
そう、この記述は
#include <matplot/matplot.h>
これだよ、これ。たぶんな。標準のformat関数とは別に matplot.hで定義されていてだな、ワタクシはそれを使っているのであろう。つぎのようにしたらエラー出たし。
std::vector<double> y = std::transform(x, [T](auto x) { return plank_black(x,T); });

てな感じで、計算してグラフ描画したいならばPython + matplotlibを使うのが手軽。計算速度はC++が速いからC++を使う場合にはMatplot++を使うか。wgnuplot作戦で行くか、ですわ。

てかね、ワタクシ何の計算をするであるかしら?  問題はそこなのだ。ワタクシの計算は電卓で十分。あるいはカシオ計算サイトで十分なのであるぞの。。。。

ワタクシいったいなにをしてるんだろか。知らん。

posted by toinohni at 19:19| 東京 ☀| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください