矩形波(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:気になるよねぇ