/*
DEPTH 256 数据深度,即存储单元的个数
WIDTH 1 存储单元的宽度
MODE 1 1:正弦波 2:三角波 3:斜坡 4:方波
maxwords 65535 最大值
*/
waveCreate(DEPTH, WIDTH, MODE, maxwords) {
let arr = [];
let temp = 0;
for (let i = 0; i < DEPTH; i++) {
switch (MODE) {
case 1: //正弦波
{
temp = ((maxwords / 2) * Math.sin(2 * Math.PI * i / DEPTH) + maxwords / 2);
break;
}
case 2: //三角波
{
let k = 2 * maxwords / DEPTH;
if ((i % DEPTH) < DEPTH / 2) {
temp += k;
} else temp -= k;
break;
}
case 3: //斜坡
{
let k = (maxwords - 1) / (DEPTH - 1);
temp += k;
if (temp >= maxwords) temp -= maxwords;
break;
}
case 4: //方波
{
if ((i % DEPTH) <= (DEPTH / 2))
temp = maxwords;
else
temp = 0;
break;
}
default: {
break;
}
}
arr.push(temp);
} //end for
return arr;
},
调用结果
let data = this.waveCreate(256, 1, 1, 65535);
let data = this.waveCreate(256, 1, 2, 65535);
let data = this.waveCreate(256, 1, 3, 65535);
let data = this.waveCreate(256, 1, 4, 65535);