How to find the average peak values and plot?
23 views (last 30 days)
Show older comments
Hi,
I got the attached plot from the code below. I would like to start the graph from 0.3 instead of 0 (y-axis) and then do the average of peaks. Average peaks should be like: average of first and second peak, then average of second and third peak and so on. Then plot them like the attached figure but with the average peak values. I would really apprecite if someone help me with that?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/440488/image.png)
m=1000;
I1=0.5;
I2=0.3;
I3=0.2;
L1=70*m;
L2=140*m;
n1=2;
n2=1.444;
index=n2;
lam=m*(1.5:0.000001:1.6);
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13);
plot(lam,I);
0 Comments
Accepted Answer
Star Strider
on 2 Dec 2020
Try this:
m=1000;
I1=0.5;
I2=0.3;
I3=0.2;
L1=70*m;
L2=140*m;
n1=2;
n2=1.444;
index=n2;
lam=m*(1.5:0.000001:1.6);
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13);
I = I + 0.3;
[pks, locs] = findpeaks(I);
pks_avg_2 = movmean(pks,2, 'Endpoints','discard'); % Means Of Consecutive Points With Full Windows (Averaging Two Peaks) Only
figure
plot(lam,I)
hold on
stairs(lam(locs(1:numel(pks_avg_2))), pks_avg_2, '-r')
hold off
grid
legend('Data', 'Mean Of Two Consecuitve Peaks', 'Location','S')
.
2 Comments
Star Strider
on 2 Dec 2020
I have absolutely no idea what you want.
Try this:
m=1000;
I1=0.5;
I2=0.3;
I3=0.2;
L1=70*m;
L2=140*m;
n1=2;
n2=1.444;
index=n2;
lam=m*(1.5:0.000001:1.6);
Q12=(4*pi*n1*L1)./lam;
Q23=(4*pi*n2*L2)./lam;
Q13=Q12+Q23;
I=I1+I2+I3+2*sqrt(I1*I2).*cos(Q12)+2*sqrt(I2*I3).*cos(Q23)+2*sqrt(I1*I3).*cos(Q13);
I = I + 0.3;
[pks1, locs1] = findpeaks(I, 'MinPeakHeight',2); % Peaks >= 2.0
[pks2, locs2] = findpeaks(I, 'MinPeakHeight',0.5); % Peaks >= 0.5
pks_avg_2 = movmean(pks2,2, 'Endpoints','discard'); % Means Of Consecutive Points With Full Windows (Averaging Two Peaks) Only
figure
plot(lam,I)
hold on
plot(lam(locs2(1:numel(pks_avg_2))), pks_avg_2, '-r')
plot(lam(locs1), pks1, '-k')
hold off
grid
legend('Data', 'Mean Of Two Consecuitve Peaks', 'Selected Peak Amplitudes (>=2)', 'Location','S')
.
More Answers (0)
See Also
Categories
Find more on Multirate Signal Processing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!