`/* 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);