Zero crossing
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?
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')
Risposte
Credo che l'errore sia dovuto alla presenza di zeri all'interno di ZCx e ZCy quando la condizione non è verificata. Una soluzione è quella di usare un secondo valore intero che rappresenta il numero di campioni trovati finora e usare quello come indice per inserire i valori.
Cioè? Cosa dovrei fare?