信號的突變點檢測問題是指在生產實踐中,反映各種系統工作狀態的信號,可能因為受到不同類型的噪聲或外界干擾而發生了信號突變,導致嚴重失真的信號出現,因此必須探測突變出現的起點和終點。研究目的在于設計出檢測方案,可以最快地檢測出系統中信號非正常變化的時刻,作出后續處理,以減小損失。目前在國內,信號的突變點檢測課題在滾動軸承、水利水電、智能空間行為識別等許多工程實踐和科學研究領域已得到廣泛研究。
自上世紀經典DSP方法提出并被逐漸成熟地應用以來,信號的突變點檢測問題一直是一個較熱的研究課題。對于信號突變點檢測問題,目前已經提出了許多有效的經典DSP方法,例如經典的基于信號能量的檢測法,然而其易于受噪聲干擾且需要延遲一段時間以計算能量,因此發展了不少改進方法,比如基于累積和CUSUM的方式因具有良好的性能而得到廣泛應用。CUSUM具有遞歸形式能夠進行實時更新操作,計算效率比較高。雖然最初提出CUSUM來處理單個數據流,但是目前基于CUSUM的檢測算法大多利用了來自多個傳感器的信息。CUSUM通常需要信號突變前和突變后的統計信息作為檢測的前提,在某些情形下,信號發生突變后的分布模型的統計信息是可以獲得的,但在更一般場景中,由于突變原因多樣且往往未知,變更后的模型發生了根本改變,突變后的統計信息是無法獲得或預知的。又有科研人員提出了突變信息快速檢測方法,快速檢測方法旨在僅僅利用少量突變后的數據來進行訓練,以得到信號突變后的模型,以此來最大程度地減少檢測延遲。放眼許多應用場景,信號突變以后的分布模型可能來自一組潛在的可能模型,換句話說,變更后模型有多種假設。例如,檢測風機軸承故障時,引起該故障的原因故障可能是外圈故障或內圈故障、滾子缺陷或和保存架故障等。在快速檢測方法中,貝葉斯方法的效果比較好,本質上該方法就是提出了信號突變后的幾種備選模型,然后通過算法來估計出最優的突變后的信號分布情況,進行進一步處理,從一定意義上放寬了很多場景中對突變后信號信息的依賴,但依然是治標不治本。
鑒于此,采用小波分析等方法對一維時間序列進行突變檢測,運行環境為MATLAB?R2021B。
function residue = cpnochange(x, statistic)
% compute total residual error in the absence of changes
n = size(x,2);
if n==0residue = NaN;
elseif strcmp(statistic,'mean')residue = n*sum(var(x,1,2));
elseif strcmp(statistic,'rms')residue = sum(n*log(sum(x.^2,2)/n));
elseif strcmp(statistic,'std')residue = sum(n*log(var(x,1,2)));
elseif strcmp(statistic,'linear')residue = sum(n*var(x,1,2) - sum((x-mean(x,2)).*((1:n)-mean(1:n)),2).^2 / (n*var(1:n,1)));
完整代碼可通過知乎學術咨詢獲得:https://www.zhihu.com/consult/people/792359672131756032?isMe=1
end
工學博士,擔任《Mechanical System and Signal Processing》《中國電機工程學報》《控制與決策》等期刊審稿專家,擅長領域:現代信號處理,機器學習,深度學習,數字孿生,時間序列分析,設備缺陷檢測、設備異常檢測、設備智能故障診斷與健康管理PHM等。