matlab不用sawtooth,自己写代码实现锯齿波/三角波 您所在的位置:网站首页 matlab三角波怎么设置 matlab不用sawtooth,自己写代码实现锯齿波/三角波

matlab不用sawtooth,自己写代码实现锯齿波/三角波

2024-06-30 00:14| 来源: 网络整理| 查看: 265

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是锯齿波的频率。在上图中,f设置为 1 / 0.5 = 2 1/0.5=2 1/0.5=2

验证一下,已知t=0.48时,对应的值为0.96,t=0.5时,对应的值为0

在这里插入图片描述

通用锯齿波

如果峰值不是1,而是其他值。 在这里插入图片描述

Q=P*f*mod(t,1/f)

乘以峰值P就行了,比如上图中的峰值为2。t是x轴,即时间轴,f是锯齿波的频率,上图中f=2。

从0开始的三角波

在这里插入图片描述

time=mod(t,1/f); lr=ceil(time*2*f); % 1在左,2在右,lr=0则值为0 if lr==1 Q=2*f*time; elseif lr==2 Q=-2*f*time+2; elseif lr==0 Q=0; end

不需要修改代码,只需要设置频率f,上图中的f为1.最后的返回值为Q,也就是三角波的值

## 从-1开始的三角波

在这里插入图片描述

在PWM SPWM都会用到。

time=mod(t,1/f); lr=ceil(time *2*f); % 1在左,2在右,lr=0则值为-1 if lr==1 Q=4*f*time-1; elseif lr==2 Q=-4*f*time+3; elseif lr==0 Q=-1; end

不需要修改代码,只需要设置频率f,上图中的f为1.最后的返回值为Q,也就是三角波的值

如果想要的峰值不是1,对Q乘以一个系数即可



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有