我大概讲一下实现的原理:正弦波移相φ,当使得大于sin(φ)的值为1,其他值为-1,占空比就跟这个φ值之间有联系。
占空比原理图如下所示。
结果上图,可以实现调节占空比,方波频率,方波个数。
下面是函数的代码:
function y=squarewav(Vm,f,K,n) %参数为幅度,频率,占空比,以及波形个数 % 正弦信号 % f = 1000;% 正弦波频率 w = 2*pi*f;% 正弦波角频率 % Vm = 2;% 正弦幅值 u = (0.5-K)*pi;% 相位 N = 4000;% 调节采样率,采样率越大,波形误差越小 M = n*N; Fs = N*f;% 采样率:1/f_sameple为采样时间间隔,通常以N倍的信号源来表示 t = [0:M]/Fs;% 采样时间向量(始终采N个点,即刚好采信号源的一个周期) y_sin = Vm*sin(w*t+u); for i=1:M+1 if(y_sin(i)>=y_sin(1)) y_plus(i) = Vm; else y_plus(i) = -Vm; end end figure subplot(2,1,1) plot(t,y_sin,t,y_plus,'r',t,0,'-') subplot(2,1,2) ylim([-2.5 2.5]) plot(t,y_plus,'r',t,0,'-') ylim([-2.5 2.5])