鋸歯状波

鋸歯状波(のこぎり波)もceil()関数を使って作り出すことができます。単純な右上がりの直線のceil()を求め、元の直線から引けばいいのです。

fs=22050;                   // default sampling frequency of Scilab[Hz]
sec=fs;                     // unit of time
Hz=2*%pi/fs;                // unit of frequency

                            // generate 440Hz square wave as 3 seconds
index=440*Hz*[1:3*sec]/2/%pi;
wave=(index-ceil(index)+0.5)*2;
playsnd(wave);            // play by 22.05kHz sampling

indexを作るときに2πで割っているのは、直線の傾きを1/Hzにするためです。少し違和感を感じますが、こうすると正弦波と周期があいますので、波形合成が簡単になります。