Help to build the logic to plot peak vs time

1 visualizzazione (ultimi 30 giorni)
t = 0:0.1:10;
y = 15*sin(pi*t);
[a,b]=peakdetection(y,0.5);
if y(i) == a;
y(i) = y(i);
else
y(i)= 0;
end
In this i want to detect peak and valley from any type of signal. After detecting i want to plot only peak against time. All other value of y (except peak) should be zero as per my requirement.
I will appreciate if anybody help me to build this logic. I tried to use if loop but it is given error
??? Subscript indices must either be real positive integers or logicals.
Error in ==> Untitled at 7
if y(i) == a;
Regards
Jeevan Patil

Risposta accettata

David
David il 19 Gen 2012
i is an imaginary number by default causing your error.
Wrap your code in a for loop
for ii=1:length(y)
if y(ii)~=a
y(ii)=0;
end
end
However you might find difficulties comparing floating point numbers. You may need to have some sort of compare function:
realCmp = @(x,y) abs(x-y)<1000*sqrt(eps)
And use
if ~realCmp(y(ii),a)
However even better that that you should use
y(~realCmp(y,a))=0;
and avoid the for loop altogether

Più risposte (1)

Jeevan Patil
Jeevan Patil il 21 Gen 2012
Thanks David,
logic given by you is working. problem was not with i, it was with logic only.
thanks again

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by