matlab计算LZ复杂度
Posted andrew-address
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab计算LZ复杂度相关的知识,希望对你有一定的参考价值。
我这个计算得14通道,每个通道截取3000个数据得复杂度,最后将计算得出得数据存储到本地txt文档中
function LZC(data) % 计算一维信号的复杂度 % data时间序列 % lzc:信号的复杂度 data = data(:,1:3000); for i=1:14 MeanData = mean(data(i,:)); % 数据二值化处理,基于均值的二值化处理 b=(data(i,:)> MeanData); x(1:length(b))=‘0‘; x(b)=‘1‘;%二值化后得到01序列字符串。 c = 1; %模式初始值 S = x(1); Q = []; SQ = []; %S Q SQ初始化 for i=2:length(x) Q = strcat(Q,x(i)); SQ = strcat(S,Q); SQv = SQ(1:length(SQ)-1); if isempty(findstr(SQv,Q)) %如果Q不是SQv中的子串,说明Q是新出现的模式,执行c 加1操作 S = SQ; Q = []; c = c+1; end end c=c+1; %循环得到的c是字符串断点的数目,所以要加1 b = length(x)/log2(length(x)); lzc = c/b; % fprintf(‘ 序列data的LZ复杂度是 ‘); % fprintf(‘%f‘, lzc); fid=fopen(‘C:Users25626Desktop滤波后数据14复杂度5 3.txt‘,‘a‘); fprintf(fid,‘%f ‘,lzc); end fclose(fid); end
以上是关于matlab计算LZ复杂度的主要内容,如果未能解决你的问题,请参考以下文章