Analysing PWM duty cycle of a signal

14 views (last 30 days)
Sherzaad Dinah on 20 Mar 2023
Edited: Sherzaad Dinah on 24 Mar 2023
I have recorded a PWM signal from a given device.
I require to determine the duty cycle(s) of the signal as the transitions from one state to another.
How may I output the duty cycle of the PWM thoughout the signal?
I am using Matlab 2016b

David Hill on 20 Mar 2023
s=pwm>threshold;%pwm is your signal, threshold is when it is considered on or off
d=diff(s);
idx1=find(s,1);
idx2=find(d==-1);
idx3=find(d==1);
num=idx2-[idx1-1,idx3(1:end-1)];
denom=diff([idx1-1,idx3]);
dutyCycle=num./denom;
3 CommentsShow 1 older commentHide 1 older comment
David Hill on 21 Mar 2023
Edited: David Hill on 21 Mar 2023
I assumed your data was a horizontal array. For a better response, attach your data.
s=CH01_01(:)';%convert to horizontal array
s=s>.75;
Sherzaad Dinah on 22 Mar 2023
Edited: Sherzaad Dinah on 24 Mar 2023
After making the change, I no longer have any error.
However all the calculated duty cycles are greater than 1?!
Is there something else that needs to be done with the data please?
s = CH01_01(:)';
s=s>0.75;%pwm is your signal, threshold is when it is considered on or off
d=diff(s);
idx1=find(s,1);
idx2=find(d==-1);
idx3=find(d==1);
num=idx2-[idx1-1,idx3(1:end-1)];
denom=diff([idx1-1,idx3]);
dutyCycle=num./denom

Categories

Find more on MATLAB in Help Center and File Exchange

R2016b

Community Treasure Hunt

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

Start Hunting!