Help to build the logic to plot peak vs time

1 visualización (últimos 30 días)
Jeevan Patil
Jeevan Patil el 19 de En. de 2012
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

Respuesta aceptada

David
David el 19 de En. de 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

Más respuestas (1)

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

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by