js方波、三角波、斜波、正弦波数据生成

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值