MATLAB Answers

How to prevent envelope crossing through function.

2 views (last 30 days)
Ali
Ali on 10 Jul 2019
Answered: Akira Agata on 11 Jul 2019
How can you stop the envelope of a sinc function crossing the function. I would like it to just skim the maxima points as shown by the drawn envelope in Sinc_envelope.jpg attached.
x = linspace(-20,20,500);
y = abs(sin(x)./(x)).*abs(sin(x)./(x));
[up,lo]=envelope(y,1,'peak');
plot(x,y)
hold on
%plot(x,up)
plot(x,up)

  0 Comments

Sign in to comment.

Accepted Answer

Akira Agata
Akira Agata on 11 Jul 2019
That is due to a characteristics of interpolation method (Spline) used in the envelope function. How about detecting peaks and interpolate them by "Shape-preserving piecewise cubic" ? The following is an example.
x = linspace(-20,20,500);
y = abs(sin(x)./(x)).*abs(sin(x)./(x));
[pk,loc] = findpeaks(y,x);
y2 = interp1(loc,pk,x,'pchip');
plot(x,y)
hold on
plot(x,y2)
legend({'Original','Envelope'},'FontSize',14)
envelope.png

  0 Comments

Sign in to comment.

More Answers (0)

Sign in to answer this question.

Tags