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('\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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM