Buongiorno, ho implementato il seguente codice di zero crossing per trovare i punti di attraversamento dello zero da positivo a negativo di un segnale e sembra funzionare. L'unico problema è che il codice sbaglia di un campione, me ne mette uno in più iniziale a 0;0. Mi è stato detto di modificare la condizione dell'if al'interno del for perchè errata... qualcuno può aiutarmi a capire dove sbaglio?
- Codice:
plot(sig_filtrato, 'y')
hold on
k = 1;
for i = 1:length(sig_filtrato)-1
if (sig_filtrato(i)>0 && sig_filtrato(i+1)<0)
prec = sig_filtrato(i);
succ = -sig_filtrato(i+1);
if(prec>succ)
ZCy(i)=sig_filtrato(i+1);
ZCx(i)=i;
if ZCx(i) ~= 0
puntoZC(k) = ZCx(i);
k = k+1;
end
else
ZCy(i)=sig_filtrato(i);
ZCx(i)=i;
if ZCx(i) ~= 0
puntoZC(k) = ZCx(i);
k = k+1;
end
end
end
end
plot(ZCx,ZCy,'or')