matlab自己写代码实现锯齿波/三角波
为什么要自己写代码,不用现成的函数sawtooth?
函数sawtooth的采样频率是固定的,也就是给定一个时间段,只能按照固定的频率取点。比如10s内,每1s取一个点。这样就得到了1s 2s 3s… 10s对应的值。
可是我希望取值是连续的,比如我想知道1.5s处对应的值是多少。尽管sawtooth可以选择更高的采样频率,比如0.5s 1s 1.5s… 但是我的需求是不确定的,我也不知道下一次要求哪个点,也许是1.502135s处对应的值,这样就没法用sawtooth函数了。
实现思路是用数学公式实现。
单位锯齿波
如果想要下图所示的单位锯齿波,从0上升,峰值为1。
Q=f*mod(t,1/f)
就这样简单的一句就可以实现了。t是x轴,即时间轴,f是锯齿波的频率。
验证一下,已知t=0.48时,对应的值为0.96,t=0.5时,对应的值为0
通用锯齿波
如果峰值不是1,而是其他值。
Q=2*f*mod(t,1/f)
乘以峰值就行了,比如我想要峰值为2。t是x轴,即时间轴,f是锯齿波的频率。
累了,三角波下次写