我這個計算得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('\n\n序列data的LZ復雜度是\n\n');
% fprintf('%f', lzc);
fid=fopen('C:\Users\25626\Desktop\濾波后數據\14\復雜度\5 3.txt','a');
fprintf(fid,'%f\r\n',lzc);
end
fclose(fid);
end
