ho un segnale che desidero copiare quando:Trovare zero crossing che stanno positivo e zero crossing che stanno negativo
1) inizia da zero crossing andamento positivo
2) copia un numero prestabilito di punti (come 8000)
3) e dopo aver copiato gli 8000 punti, continuare ad aggiungere punti finché non viene trovata una sezione di passaggio a zero in basso.
Sono in grado di trovare lo zero crossing ma sto riscontrando alcuni problemi con il sapere come dire quando c'è un passaggio a zero che diventa positivo e/o un passaggio a zero negativo. Sto anche avendo problemi con l'aggiunta la sezione successiva di punti dopo i 8000 punti alla fine (domanda SO # 1 e mettere in discussione # 3in grassetto sto ho problemi con)
Nota: per favore tenete a mente che il segnale che sto usando è un segnale audio, quindi non sarà bello come una semplice equazione.
Ho allegato il codice di prova insieme a un'immagine. Sto usando Matlab/ottava
clear all, clc, tic, clf;
n=16000
t=linspace(0,2*pi,n);
y=cos(6*t)+sin(4*t);
%find zero crossings
t1=y(1:n-1);
t2=y(2:n);
tt=t1.*t2;
indx=find(tt<0)
%1) start at first zero crossing going positive
%2) get 8000 pts
%3) and after the 8000 points continue appending points until a zero crossing going down section is found
new_y=y(indx(1,1):8000); %start at zero section found get 8000 pts
subplot(2,1,1);plot(y);title('Original Signal')
subplot(2,1,2);plot(new_y);title('New signal')
Si avrà probabilmente anche voler filtrare il segnale per rimuovere il rumore ad alta frequenza prima di fare questo test per evitare incroci multipli man mano che si passa da zero. – craigim
grazie Craigim per l'aiuto, ma cosa intendi con "test x per il punto corrente e l'ultimo punto". Cosa dovrei testarli contro? –
Esattamente come lo fai dipenderà dai dettagli di come stai leggendo nei dati, ma se il tuo indice di ciclo è 'n', allora potresti fare qualcosa come' x = segno (t (n-1)) - segno (t (n)); se x> 0; aggiungi 8000 punti; elseif x == 0; aggiungere un punto; elseif x <0; smettere di aggiungere punti, fine'. – craigim