鋸歯状波
鋸歯状波(のこぎり波)も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にするためです。少し違和感を感じますが、こうすると正弦波と周期があいますので、波形合成が簡単になります。