# Plotting periodic sawtooth wave with 25%, 50% and 75% duty cycle

106 views (last 30 days)
Ginnie Lim on 10 Mar 2022
Commented: Ginnie Lim on 15 Mar 2022
How do I generate a periodic sawtooth with varying duty cycle (e.g 25%, 50%, 75%) using x = sawtooth(2*pi*t)?
Scott MacKenzie on 10 Mar 2022
Ok got it! Just posted an answer. Hope this helps.

Scott MacKenzie on 10 Mar 2022
Edited: Scott MacKenzie on 10 Mar 2022
I'm sure there are other (perhaps better) ways to do this, but I think the following code achieves what you are after:
% create sawtooth waveform (from sawtooth documentation)
T = 5*(1/50);
fs = 1000;
t = 0:1/fs:T-1/fs;
y = sawtooth(2*pi*50*t);
tiledlayout('flow');
% duty cycle = 100%
nexttile;
plot(t,y);
title('100% Duty Cycle');
% duty cycle = 50%
nexttile;
floor = max(y) - 0.50 * spread;
y1 = y;
y1(y1<floor) = floor;
plot(t,y1);
title('50% Duty Cycle');
% duty cycle = 25%
nexttile;
floor = max(y) - 0.25 * spread;
y2 = y;
y2(y2<floor) = floor;
plot(t,y2);
title('25% Duty Cycle');
% duty cycle = 75%
nexttile;
floor = max(y) - 0.75 * spread;
y3 = y;
y3(y3<floor) = floor;
plot(t,y3);
title('75% Duty Cycle');
Ginnie Lim on 15 Mar 2022
Thank you so much for your help!!