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

How do I generate a periodic sawtooth with varying duty cycle (e.g 25%, 50%, 75%) using x = sawtooth(2*pi*t)?

3 Comments

The idea of "duty cycle" applies to pulse waves, not sawtooth waves. Please try to explain in more detail -- perhaps with a sketch -- what you are trying to do.
Hi sir, thank you for your response! I would like to generate a wave like the one shown in the photo attached.
Ok got it! Just posted an answer. Hope this helps.

Sign in to comment.

 Accepted Answer

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');
spread = abs(max(y) - min(y));
% 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');

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!