我大概講一下實現的原理:正弦波移相φ,當使得大於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])
