矩形波(2)

昨日の鋸歯状波にオフセットを与えてもう一度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;
duty = 0.3
wave=(ceil(index-ceil(index)+duty)-0.5)*2;
playsnd(wave);              // play by 22.05kHz sampling

変数dutyがデューティーサイクルを決めます。0から1までの値を与えます。デューティーが0のときと1のときには小さなひげが出ます。気になる人*1はmax()とmin()にかけてひげを取ってください。

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;
duty = 0.3;
wave=max(min((ceil(index-ceil(index)+duty)-0.5)*2,1),-1); 
playsnd(wave);              // play by 22.05kHz sampling

*1:気になるよねぇ