Ich habe ein Signal, das ich kopieren möchte, wenn es:Finding Nulldurchgang, die positive und Nulldurchgang werden die negativ werden
1) beginnt bei Nulldurchgang gehen positive
2) Kopiere eine bestimmte Anzahl von Punkten (wie 8000)
3) und nachdem die 8000 Punkte kopiert wurden, setze die Punkte so lange fort, bis ein Nulldurchgangsbereich gefunden wird.
Ich kann den Nulldurchgang finden, aber ich habe einige Probleme damit zu wissen, wie man weiß, wenn ein Nulldurchgang positiv und/oder ein Nulldurchgang negativ wird. Ich bin auch Probleme, am Ende des nächsten Abschnitts der Punkte nach den 8000 Punkten mit dem Hinzufügen (So # 1 hinterfragt und in Frage # 3in fett Ich habe Probleme mit)
Hinweis: Bitte beachten Sie, dass das Signal, das ich verwende, ein Audiosignal ist, so dass es nicht so schön ist wie eine einfache Gleichung.
Ich habe den Testcode zusammen mit einem Bild beigefügt. Ich bin mit Matlab/Oktave
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')
hat, werden Sie wollen wahrscheinlich auch das Signal filtern Hochfrequenzrauschen zu entfernen, bevor Sie diesen Test zu tun Vermeiden Sie mehrere Übergänge, wenn Sie durch Null gehen. – craigim
danke Craigim für die Hilfe aber was meinst du "Test x für den aktuellen Punkt und den letzten Punkt". Was sollte ich gegen sie testen? –
Genau wie Sie es tun, hängt von den Details ab, wie Sie in den Daten lesen, aber wenn Ihr Schleifenindex "n" ist, dann könnten Sie etwas tun wie "x = sign (t (n-1)) - sign (t (n)); wenn x> 0; addiere 8000 Punkte; elseif x == 0; füge einen Punkt hinzu; elseif x <0; hör auf, Punkte hinzuzufügen; end '. – craigim