忍者ブログ
日々の研究生活のメモ書きなど
まずはデータ生成
これもawkでやってしまおう
awk 'BEGIN{fs=10.0;for (i = 0; i < 10000; i++){t=i/fs; print t, sin(2*3.14*t*10)}}' > hoge.txt

# もっと桁数が欲しい場合は
# ちなみに後述のawkコマンドを走らせてきちんと結果を得るためには桁数が必要なので、こっちで
awk 'BEGIN{fs=10.0;for (i = 0; i < 10000; i++){t=i/fs; printf "%.10e %.10e\n", t, sin(2*3.14*t*10)}}' > hoge.txt
データ



このデータの最大値を求めるには
awk 'NR==1 {max=$1} {if($1 > max) max = $1} END {print max}' hoge.txt
最小値は、
awk 'NR==1 {min=$1} {if($1 < min) min = $1} END {print min}' hoge.txt
極大値、極小値を求めるには
awk 'NR==1{x=0} NR>1 {diff1=diff2; diff2=$2-x; x=$2} {if(diff1*diff2<0)print $1}' hoge.txt > foo.txt
これらを重ねてプロットしてみる
plot "hoge.txt" w l lw 2 lc 6, "foo.txt" w p pt 5 ps 2 lc 7
sin
赤い時刻が極大値または極小値
もしそれらをバラバラに知りたかったら

awk 'NR==1{x=0} NR>1 {diff1=diff2; diff2=$2-x; x=$2} {if(diff1*diff2<0 && diff1>0)print $1, 1}' hoge.txt > maximum.txt
awk 'NR==1{x=0} NR>1 {diff1=diff2; diff2=$2-x; x=$2} {if(diff1*diff2<0 && diff1 <0) print $1,-1 }' hoge.txt > minimum.txt
でおk

プロットは
plot "hoge.txt" w l lw 2 lc 6, "maximum.txt" w p pt 5 ps 2 lc 7, "minimum.txt" w p pt 5 ps 2 lc 4

sin

(本当はNR==1のときにdiff2=0ってした方がいい気がするけどまぁいいや・・・)











PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞
自己紹介:
#include <stdio.h>
#include "MyProfile.h"

#define TWITTER coffee_pote

#define WISH_LIST
amazonのほしい物リスト
#ifdef RICH_FLAG
// ↑いつも支援いただきありがとうございます m(_ _)m
#endif


int main(void){

printf("\n");
printf("D論・・・? あぁそんな子もいましたね(執筆中)\n");
printf("\n");
printf("猿でもわかるgnuplot を執筆中(こっちの執筆は半年以上何も進んでいない・・・・)\n");
/* 最終更新 2017/07/19 */
return 0;

}
カウンター
ブログ内検索
ツイートするボタン
Flickr

Template "simple02" by Emile*Emilie
忍者ブログ [PR]