Gnuplotおぼえがき

僕はそういう学校に通っていることもあって, 毎週指導書に従った実験を行ってはレポートに追われるという日々を過ごしています.
そのレポートには結果をグラフにせよという場合があるわけですが, 今年の実験は測定値の増加や複雑な指示があるなどの理由から, 今までのように手書きでグラフを描くのが流石に辛くなってきました.

例えば...

オシロスコープから直接出力したCSV形式のファイル(データ数500件超)をグラフにせよ

だとか,

(上のオシロから出力したデータより) CH1 - CH2をグラフにせよ

みたいなもの. また,

測定値Aの関係をグラフにせよ
また, 測定値Bの関係を片対数グラフにせよ

といった, いくつ用紙の種類用意すればいいんだよ!などなど... (まぁ甘えといえば甘えですが)

グラフ作成といったらM$ Excelのイメージが強いんですが, イケイケのクールな学生を目指して(???)Gnuplotを使ってみたところ最高だったので忘れないようにメモしておきます.

Read More »

関数の戻り値が最も小さくなる配列の要素は何番目か

関数foo()と何らかの値の入った配列nyanがあって,

double foo(double arg) {
  return std::acos(arg);
}

double nyan[] = {.0, -.1, .3, -.5, .7};

foo(nyan[n])が最小になるn取得するって感じのコードを某所で見つけた.
こんな感じ.

int result;
double prev = INFINITY;

for (int i = 0; i < 5; i++) {
  if (foo(nyan[i]) < prev) {
    prev = foo(nyan[i]);
    result = i;
  }
}

std::cout << result << std::endl; // = 4

別に問題ないんだけれども, とにかくCoolじゃなくて個人的にもにょる...

ってことでこんな感じなのを思いついた. もっとよさ気な書き方があったら教えてくださいー.
動作確認はclang++ -Wall -Wextra -std=c++14 prog.ccでしました.

Read More »