R学习_multitaper包解析1:子函数centre,dpss
生活随笔
收集整理的這篇文章主要介紹了
R学习_multitaper包解析1:子函数centre,dpss
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前言
之前講了MTM(多錐形窗譜估計)的相關原理,現在來分析一下它的R語言的實現,這個實現是提出人的學生寫的,和matlab的實現進行對照分析,加深理解,提高大家對這門技術的掌握程度。
想要復習的可以參考一下之前的文件:
mtm原理:現代譜估計:多窗口譜
想要復習一下如何實現的可以參考:
MTM:matlab實現1MTM:matlab實現1
MTM:matlab實現2參數解析MTM參數解析
MTM:matlab實現3譜功率計算MTM譜功率計算
MTM:matlab實現4主函數解析MTM 主函數
目錄
- 前言
- 目錄
- centre函數
- DPSS函數
centre函數
該函數負責對輸入的時間序列進行處理,使其滿足零均值條件
######################################################################### ## ## centre ## ## Takes a time series and converts to zero-mean using one of three ## methods: Slepian projection, arithmetic mean, or trimmed mean. ## ######################################################################### r里面的賦值采用<-格式 輸入參數 時間序列x nw生成幾階dpss序列 k使用的窗口數 deltat 采樣間隔 trim截尾平均時丟掉的點數 centre <- function(x, nw=NULL, k=NULL, deltaT=NULL, trim=0) { 判斷x是否有非數值na.fail(x)初始化結果res <- NULL如果沒有輸入dpss參數的話,則默認為截尾平均if(is.null(nw) && is.null(k) ) {res <- x - mean(x, trim=trim)如果有dpss參數,則使用slepian投影,截尾數舍棄} else {if(trim != 0) {warning(paste("Ignoring trim =", trim))}如果采用dpss方法,且相關參數不符合條件,則停止函數stopifnot(nw >= 0.5, k >= 1, nw <= 500, k <= 1.5+2*nw)如果dpss階數和長度之比不合適,停止運算if (nw/length(x) > 0.5) { stop("half-bandwidth parameter (w) is greater than 1/2")}如果,deltat沒有值且x是時間序列,則獲得它的采樣間隔,否則,默認為1if(is.null(deltaT)) {if(is.ts(x)) {deltaT <- deltat(ts)} else {warning("deltaT not specified; using deltaT=1.")deltaT <- 1.0}}獲得時間序列x的長度nn <- length(x)獲得生成的DPSS序列結果,輸入參數為n,k,nw,返回特征值dpssRes <- dpss(n, k=k, nw=nw,returnEigenvalues=TRUE)dw值等于返回結果中的特征值*采樣間隔的單位根dw <- dpssRes$v*sqrt(deltaT)ev值等于返回結果中的特征加窗矩陣,每一列對應第k個。ev <- dpssRes$eigenswz是特征向量的列值和swz <- apply(dw, 2, sum)## zero swz where theoretically zero; odd tapers如果k》2則swz偶數位的值是0if(k >=2) {swz[seq(2,k,2)] <- 0.0}ssqswz是幅頻率功率之和。ssqswz <- sum(swz^2)如果不是復值x,對x采取meave函數進行處理if(!is.complex(x)) {res <- .mweave(x, dw, swz,n, k, ssqswz, deltaT)res <- x - res$cntr} else {res.r <- .mweave(Re(x), dw, swz,n, k, ssqswz, deltaT)res.i <- .mweave(Im(x), dw, swz,n, k, ssqswz, deltaT)res <- x - complex(real=res.r$cntr, imaginary=res.i$cntr)}}return(res) }DPSS函數
負責生成給定的k個正交的離散扁球序列,即用來加權的窗
使用對角法生成。
參照論文和譜分析教材那本書,會講如何得出給定的值
總結
以上是生活随笔為你收集整理的R学习_multitaper包解析1:子函数centre,dpss的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA做一个五星评论打分字体,java
- 下一篇: ar android app,Rakug