天天看點

一次性計算多個時間序列的标量時間序列分析度量研究(Mtlab代碼實作)

 👨‍🎓個人首頁:研學社的部落格 

💥💥💞💞歡迎來到本部落格❤️❤️💥💥

🏆部落客優勢:🌞🌞🌞部落格内容盡量做到思維缜密,邏輯清晰,為了友善讀者。

⛳️座右銘:行百裡者,半于九十。

📋📋📋本文目錄如下:🎁🎁🎁

目錄

💥1 概述

📚2 運作結果

🎉3 參考文獻

🌈4 Matlab代碼實作

一次性計算多個時間序列的标量時間序列分析度量研究(Mtlab代碼實作)

💥1 概述

時間序列分析度量 (MATS)計算了許多不同的标量時間序列分析度量(線性、非線性和其他統計度量)。它還包含預處理工具(轉換和标準化)、資料拆分工具、重采樣資料生成以及時間序列和計算路徑成本的可視化工具。MATS工具包的優勢在于同時對多個時間序列和多個度量進行操作,進而允許設定一系列特定于度量的參數。任何操作的幫助都以 html 格式提供。

MATS 的一個主要功能是它跟蹤兩個清單:包含要分析的标量時間序列集的時間序列清單,以及包含根據目前時間序列清單中的時間序列計算的所選路徑成本的路徑成本的路徑成本。時間序列清單是動态的,是以可以從清單中删除時間序列,并且可以通過選擇與資料相關的特定操作将新的時間序列添加到清單中,即加載時間序列檔案,從清單中标準化或分割時間序列,或生成重新采樣(代理)時間序列(主菜單視窗的左側)。可以選擇許多不同類型的測量(線性、非線性、其他)。然後,根據目前時間序列清單中的所有時間序列計算所選路徑成本,并将路徑成本存儲在目前度量清單中,其中為每個度量及其參數值的每個組合配置設定一個唯一名稱(主菜單視窗的右側)。通過從度量清單中選擇度量名稱,并從與計算度量關聯的時間序列清單中選擇時間序列名稱,可以以不同的方式檢視計算的度量,例如度量圖與段或代理項時間序列索引,或度量與一個或兩個不同參數(2D 和 3D 圖)。度量與代理時間序列索引的可視化工具還包含參數和非參數測試。

使用者可以選擇許多不同的度量,以及度量特定參數,在不同的時間序列上計算它們,并檢視不同度量和時間序列的結果。應該注意的是,當選擇了大量時間序列或時間序列的長度很大(或兩者兼而有之)時,每個標明路徑成本的計算可能會很慢。此外,一些度量,例如局部線性模型的度量和相關次元的度量,需要較長的計算時間。

📚2 運作結果

一次性計算多個時間序列的标量時間序列分析度量研究(Mtlab代碼實作)
一次性計算多個時間序列的标量時間序列分析度量研究(Mtlab代碼實作)

 本文隻展現部分結果圖 。

一次性計算多個時間序列的标量時間序列分析度量研究(Mtlab代碼實作)

if (HDR.FILE.FID<0) | ~HDR.FILE.OPEN, 

        HDR.FILE.status = -1;

        %fprintf(HDR.FILE.stderr,'Warning SCLOSE (%s): invalid handle\n',HDR.FileName);

end;

if HDR.FILE.OPEN >= 2,          % write-open of files 

    % check file length - simple test for file integrity         

        EndPos = ftell(HDR.FILE.FID);          % get file length

        % force file pointer to the end, otherwise Matlab 6.5 R13 on PCWIN

        status = fseek(HDR.FILE.FID,0,'eof');

        if strcmp(HDR.TYPE,'BKR');

                if HDR.NS<1, 

                        fprintf(HDR.FILE.stderr,'Error SCLOSE BKR: number of channels (HDR.NS) must be larger than zero.\n');

                        return;

                end;

                if HDR.NRec<1, 

                        fprintf(HDR.FILE.stderr,'Error SCLOSE BKR: number of blocks (HDR.NRec) must be larger than zero.\n');

                        return;

                end;

                % check file length and write Headerinfo.

                HDR.SPR = (EndPos-HDR.HeadLen)/(HDR.NRec*HDR.NS*2);

                if isnan(HDR.SPR), HDR.SPR=0; end;

                if HDR.FILE.OPEN==3;

                        if any(isnan([HDR.NRec,HDR.NS,HDR.SPR,HDR.DigMax,HDR.PhysMax,HDR.SampleRate])),     % if any unknown, ...    

                                fprintf(HDR.FILE.stderr,'Error SCLOSE BKR: some important header information is still undefined (i.e. NaN).\n');

                                fprintf(HDR.FILE.stderr,'\t HDR.NRec,HDR.NS,HDR.SPR,HDR.DigMax,HDR.PhysMax,HDR.SampleRate must be defined.\n');

                                fprintf(HDR.FILE.stderr,'\t Try again.\n');

                        end;

                        fclose(HDR.FILE.FID);

                        HDR.FILE.FID = fopen(HDR.FileName,'r+');

                        count=fwrite(HDR.FILE.FID,HDR.VERSION,'short');            % version number of header

                        count=fwrite(HDR.FILE.FID,HDR.NS,'short');            % number of channels

                        count=fwrite(HDR.FILE.FID,HDR.SampleRate,'short');      % sampling rate

                        count=fwrite(HDR.FILE.FID,HDR.NRec,'int32');            % number of trials: 1 for untriggered data

                        count=fwrite(HDR.FILE.FID,HDR.SPR,'uint32');            % samples/trial/channel

                        count=fwrite(HDR.FILE.FID,HDR.PhysMax,'short');        % Kalibrierspannung

                        count=fwrite(HDR.FILE.FID,HDR.DigMax, 'short');        % Kalibrierwert

                        count=fwrite(HDR.FILE.FID,zeros(4,1),'char');        

                        count=fwrite(HDR.FILE.FID,[HDR.Filter.LowPass,HDR.Filter.HighPass],'float'); 

                        fseek(HDR.FILE.FID,32,'bof');

                        HDR.FLAG.TRIGGERED   = HDR.NRec>1;    % Trigger Flag

                        count = fwrite(HDR.FILE.FID,HDR.FLAG.TRIGGERED,'int16');           % FLAG

                    if ~all([HDR.NS, HDR.NRec, HDR.AS.bpb]>0)

                        HDR.AS.EVENTTABLEPOS = HDR.HeadLen; 

                    else

                            HDR.AS.EVENTTABLEPOS = HDR.HeadLen+HDR.AS.bpb*HDR.NRec;

                    end; 

                        if isfield(HDR.EVENT,'VAL')

                                % handling of sparse (non-equidistant) sampling values

🎉3 參考文獻

部分理論來源于網絡,如有侵權請聯系删除。

[1]Dimitris Kugiumtzis (2023). Measures of Analysis of Time Series toolkit (MATS)

🌈4 Matlab代碼實作

繼續閱讀