我有,我想一個信號時,它來複制:尋找過零點即會積極和零交叉所要負
1)開始於過零點會積極
2)複製設定數量的點(如8000)
3)複製8000點後繼續附加點,直到找到零交叉下降部分。
我能找到的零交叉,但我有與知道如何告訴時,有一個過零點會積極和/或過零變負的一些問題。我也有在末尾加上8000點後點的下一個部分的麻煩(所以質疑#1和質疑#3大膽我有問題)
注意:請記住我使用的信號是音頻信號,因此它不會像簡單的公式那麼好。
我附上了測試代碼以及圖像。我使用MATLAB /八度
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')
您也可能要篩選你的信號做這個測試之前去除高頻噪聲當你通過零時避免多次交叉。 – craigim 2013-05-03 20:49:04
感謝Craigim的幫助,但是你是什麼意思「測試x當前點和最後一點」。我應該對他們進行測試? – 2013-05-03 22:28:32
你究竟是怎麼做的,取決於你在數據中閱讀的細節,但是如果你的循環索引是'n',那麼你可以做一些像'x = sign(t(n-1)) - sign (T(N));如果x> 0;加8000分; elseif x == 0;附加一個點; elseif x <0;停止添加點;結束。 – craigim 2013-05-03 22:38:30