周期Tの三角波を生成するにはabs(mod(i,T)-T/2)-T/4とする。
ここで、i=0,1,2,3,...。
また、Tは4の倍数である必要がある。
この文章は Gist https://gist.github.com/t-nissie/0325fc29d833e0aa6f4d に置いてある。
git clone https://gist.github.com/0325fc29d833e0aa6f4d.git triangle_waveもしくは
git clone git@gist.github.com:0325fc29d833e0aa6f4d.git triangle_waveでクローンできる。
triangle_wave.gp:
#!/usr/bin/env gnuplot
##
set title 'triangle wave with {/Times-Italic T}=16'
T = 16
set key bottom
set xrange [0:T*2]
set samples T*2+1
set yrange [-T:T]
set terminal postscript landscape enhanced color dashed "Times-Roman" 27
set output "triangle_wave.eps"
set xlabel '{/Times-Italic i}'
set xtics 4
set ytics 4
set grid
plot int(x)%T title ' mod({/Times-Italic i},{/Times-Italic T})' with linespoints lt 2 pt 2 lw 3,\
int(x)%T-T/2 title ' mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2' with linespoints lt 3 pt 3 lw 3,\
abs(int(x)%T-T/2) title 'abs(mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2)' with linespoints lt 4 pt 4 lw 3,\
abs(int(x)%T-T/2)-T/4 title 'abs(mod({/Times-Italic i},{/Times-Italic T})-{/Times-Italic T}/2)-{/Times-Italic T}/4'\
with linespoints lt 1 pt 1 lw 3,\
0 t '' with lines lt 1 lc 9
set output # ensure to close the output file
!epstopdf.pl triangle_wave.epsUNIXの場合は gnuplot triangle_wave.gp 、
Windowsの場合は gnuplot.exe triangle_wave.gp などと実行する。
実行結果は図のとおりになる。
図: 三角波を生成する方法。この図はtriangle_wave.gpを実行して得られる。
- 周期
Tの三角波を生成する方法abs(mod(i,T)-T/2)-T/4を紹介 i=0,1,2,3,...、Tは4の倍数- 剰余 (Fortran:
mod(i,T), C:i%T) を巧妙に使う - 実は
i, Tともに実数でも可 - 生成した三角波でヒステリシスループを描く

