Zero crossing

Messaggioda Nicholas_ASR » 27/09/2017, 09:25

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')

   
Nicholas_ASR
Average Member
Average Member
 
Messaggio: 292 di 590
Iscritto il: 12/11/2013, 17:34

Re: Zero crossing

Messaggioda apatriarca » 27/09/2017, 10:19

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.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4833 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Zero crossing

Messaggioda Nicholas_ASR » 27/09/2017, 13:26

Cioè? Cosa dovrei fare?
Nicholas_ASR
Average Member
Average Member
 
Messaggio: 294 di 590
Iscritto il: 12/11/2013, 17:34


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite