Zero crossing

Nicholas_ASR
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
apatriarca
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.

Nicholas_ASR
Cioè? Cosa dovrei fare?

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.