📄 readme
字号:
These codes were developed using matlab 6.0 under Linux. They have beensuccessfully run on all versions of matlab >6.0 and on all operating systems. They can be quite memory intensive (and slow) if using a large time series. A quick test of these codes is run using the file example1.m imf = example1; or imf = example1(t,x);this runs a synthetic example or runs on user provided data(type 'help example1' at matlab's command prompt for more information)A much longer test is also provided to demonstrate the use of EMD fortime-domain filtering. See the help for example2.m (type 'help example2'). example2; this loads a matlab file, line15.mat, or an ASCII file, line15.txt, andperforms the EMD on every seismic trace in the file. The ASCII file containstwo-way travel time in column 1, followed by trace data in every additionalcolumn. Once loaded, the emd is performed using mat_emd.m, and the user(after a long time) is allowed to interactively select which cumulative-sumIMFs best represent their desired output.Additional help can be found while running matlab by typing 'help function.m' where function.m is the script of interest. The general application of these codes is as follows:To perform the Empirical Mode Decomposition imf = semd(x,nIMFs,nITS); inputs: x = time series to decompose nIMFS = max number of IMFs to produce nITS = max number of iterations for sifting outputs: imf = IMFs for xTo perform the EMD on a matrix [imf,cumimf] = mat_emd(X,nIMFs,nITS); inputs: X = matrix of several time series to decompose, one column per signal nIMFS = max number of IMFs to produce nITS = max number of iterations for sifting outputs: imf = bank of IMFs for each X cumimf = cumulative-sum bank of IMFs for each X To select filtered traces from the outputs from mat_emd [y,index] = IMFpick(X,t,cumimf,scale); inputs: X = same as in mat_emd above t = single column vector of times for each sample in X cumimf = cumulative-sum IMFs from mat_emd above scale = optional t^n scaling factor. [] for no scaling outputs: y = EMD-filtered data index = number of IMFs used to produce each 'y'To perform the Hilbert-Huang Transform (after completing the EMD) [omega,amp,mag,phase,w] = fhilbert(imf,t0,tf,H); inputs: imf = IMFs from semd.m t0 = start time for series in seconds tf = stop time for series in seconds H = set to [] or type 'help fhilbert' in matlab for more information outputs: omega = instantaneous frequency as a function of time amp = instantaneous amplitude as a function of time mag = time-frequency amplitude matrix (another form of omega(t) and amp(t) phase = instantaneous phase as a function of time w = frequencies for which 'mag' was calculatedAll other files are called from within.A sample data file (line15.mat) is included to test these codes. Type'load line15.mat' in matlab and a matrix of seismic traces will be loadedinto memory (one trace per column)*** The official signal processing toolbox for matlab is required.Bradley M. BattistaUniversity of South CarolinaDepartment of Geological Sciences701 Sumter Street, EWS 617Columbia, SC. 29208COPYRIGHT: see the associated COPYRIGHT.txt file, and alsohttp://software.seg.org/disclaimer2.txtThis source code may be found online at:http://software.seg.org/2007/0003
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -