我正在写交流function来产生梯形波。 有没有人知道产生梯形波的数学方程式? 与y = A * sin(B * x)非常相似的想法为不同的x值产生正弦波。
发送单个梯形波脉冲的方法包括使用Heaviside阶跃函数https://en.wikipedia.org/wiki/Heaviside_step_function
如果你想要表示这种function的“纯粹”数学方法,请使用它。 只需逐个构建你的function,将第一个部分乘以一个当x =脉冲开始时“激活”的重物。 对于下一个部分,首先减去最后一个函数,然后添加新的数学函数,将其乘以足够的重力函数,依此类推。 它应该结束这样的事情(如果你没有得到它,请阅读维基百科文章):
H(n) := (x >= n)?1:0; y := H(0)*(x) + H(1)*(-x + 1) + H(2)*(-(-x + 1) + (3-x));
但是,为了简化代码和提高效率,我们使用if语句。 考虑一个45度的梯形波,具有恒定的酉速度。
float trapezoidalWave(float x, float t) { float y; if ( x <= t + 1 ) { // 45 degree ascending line y = x - t; } else if ( x <= t + 2) { // horizontal line y = 1; } else if (x <= t + 3) { // 45 degree descending line y = t + 3 - x; } else { y = 0; } return y; }
如果你想要一个“长波”而不只是一个脉冲,使用模块(%),如果你不需要时间变量,只需将其替换为0。
您可以使用等式而不是限制。
a/pi(arcsin(sin((pi/m)x+l))+arccos(cos((pi/m)x+l)))-a/2+c
此外,这是一个直接的三角函数,即使它可能更长,更复杂一点。
以上就是c/c++开发分享梯形波方程的方程相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/544937.html