天天看点

一次性计算多个时间序列的标量时间序列分析度量研究(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代码实现

继续阅读