⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chuli.m

📁 自己做的一个项目的处理程序: 实现大量数据的格式读取
💻 M
字号:
fid=fopen('D19-07.48-19-15.11.m','rt') ;           %   ******在MATLAB中打开数据文件
d=fscanf(fid,'%s')  ;                              %   ******显示矩阵a
dim=size(d) ;                                          %查看当前d的尺寸(为了得到不需要处理的尾列)
col=dim(2);                                           %查看d的列数
row=dim(2)/136   ;                                      %查看d的行数,136是由应答幁68位的格式决定
d(:,1:10)=[];                                              %去掉前10位不需要处理的数据(作用不大)
%a(:,(b-12):b)=[];%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 开始处理前10组温度参数(黑体温度因为计算系数不同,额外再进行处理) %%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
num=136;
m=1;
  for  j=1:row
      w=d(m:m+39);                                                    %取有效的40列数字  
        RL=13000;
        a=-6.011879920959;
        b=4622.5332031;
        c=-86421.703125;                                                   %定义计算需要的常量
 %一般为-30度~+60度,对应0x0DDD~0x0150.
        k=1;
       for p=1:4:40                                                       %循环计算10组温度
           X=w(p:p+3);   
           X=hex2dec(X);                                                 %X数值进行进制换算
           R=(RL*X)/(4000-X);                                           %计算R数值
           % T=2*c/(sqrt(power(b,2)-4*c*(a-log(R)))-1)-273.15;  %计算T数值,单位为摄氏度
           pl1=log(R);
           pl2=a-pl1;
           ql=4*c*pl2;
           ml=power(b,2);
           bb=ml-ql;
           bl=sqrt(bb);
           fenmu=bl-b;
           T=(2*c/fenmu)-273.15;
           SaveWendu1(j,k)=T;
           k=k+1;
       end
  m=m+num;
  end
%plot( SaveT)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%单独处理黑体温度的计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
first=41;
for ht=1:row
        heiti=d(first:first+3);
        RL=3000;
        a=-4.44812;
        b=4130.69007;
        c=-100906.75161;                                                 %重新定义计算黑体需要的常量
        heiti=hex2dec(heiti);                                            %把数值进行进制换算
        R=(RL*heiti)/(4000-heiti);                                       %计算黑体R数值
        %T=2*c/(sqrt(power(b,2)-4*c*(a-log10(R)))-1)-273.15;%计算黑体T数值,单位为摄氏度
           pl1=log(R);
           pl2=a-pl1;
           ql=4*c*pl2;
           ml=power(b,2);
           bb=ml-ql;
           bl=sqrt(bb);
           fenmu=bl-b;
           T=(2*c/fenmu)-273.15;
        SaveHeiti(ht)=T;
        first=first+135;
end
%plot( SaveT)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%处理计算输出电压公式相同的15组信号的计算%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
qidian=45;
for loop=1:row
     w=d(qidian:qidian+29);       %循环取数
     col=1;
     for lock=1:2:30
         Vol=w(lock:lock+1);
         Vol=hex2dec(Vol);
         dianya=Vol*20 ;          %单位是毫伏
         SaveVol(loop,col)=dianya;
         col=col+1;
     end
 qidian=qidian+136;
end
%plot( SaveVol)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统当前已经运行时间的计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dot=75;
for TM=1:row
    time=d(dot:dot+5);
    nm1=1;
    nm2=1;
    num1=time(6);
    time(6)=time(2);
    time(2)=num1;
    num2=time(5);
    time(5)=time(1);
    time(1)=num2;                %高低位校正
    time=hex2dec(time);                %进制转换
    disp('当前时间是系统已运行:       单位(秒)') ;                    %能产生小延时就好了~~~
    disp(time);
    SaveT(TM)=time;
    dot=dot+136;
end
 %%绘图命令%%%   
plot(SaveWendu1,SaveT);    %前10组数据对时间的绘图
title('前10组的温度变化 :参数为SaveWendu1');
xlabel('摄氏度       °C');
ylabel('时间     s');
figure(2)
plot(SaveHeiti,SaveT) ;                                %黑体温度对时间绘图
title('黑体温度图:参数为SaveHeiti')
xlabel('摄氏度       °C');
ylabel('时间     s');
figure(3)
plot(SaveVol,SaveT);                                    %各个部分电压的绘图
title('电压变化图:参数为SaveVol')
ylabel('时间       s');
xlabel('输出电压     mV');
hold on
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%





%这个部分符号有问题~
%系统内部控制加热器的开关状态显示%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %{dot1=81;
%    for control=1:row
%        contr=d(dot1:dot1+1);
%        contr1=hex2dec(contr);
%        contr2=dec2bin(contr1);
%        if length(contr2)~=4
%        elseif length(contr2)==3
%            if contr2(3)==0
%            disp('相机的中段加热器关闭')
%            elseif contr2(3)==1
%                disp('相机的中段加热器打开')
%            end
%            if  contr2(2)==0
%            disp('相机的前段加热器关闭')
%            elseif contr2(2)==1
%                disp('相机的前段加热器打开')
%           end
%           if    contr2(1)==0
%           disp('遮光罩加热器关闭')
%            elseif contr2(1)==1
%                disp('遮光罩加热器打开')
%            end
%        end
%        elseif    length(contr2)==2
%             if  contr2(2)==0
%            disp('相机的前段加热器关闭')
%            elseif contr2(2)==1
%                disp('相机的前段加热器打开')
%              end
%            if    contr2(1)==0
%            disp('遮光罩加热器关闭')
%            elseif contr2(1)==1
%                disp('遮光罩加热器打开')  
%           end
%            else
%                if contr2(4)==0
%                    disp('黑体加热器关闭')
%                elseif contr2(4)==1
%                    disp('黑体加热器打开')
%                end
%                if contr2(3)==0
%            disp('相机的中段加热器关闭')
%            elseif contr2(3)==1
%                disp('相机的中段加热器打开')
%                end
%            if  contr2(2)==0
%            disp('相机的前段加热器关闭')
%            end
%            elseif contr2(2)==1
%                disp('相机的前段加热器打开') 
%            if    contr2(1)==0
%            disp('遮光罩加热器关闭')
%           elseif contr2(1)==1
%               disp('遮光罩加热器打开') 
%         end
           
               
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统内部控制加热器的开关状态显示%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dot2=83;
for Inter=1:row
    InterTime=d(dot2:dot2+1)
    if char(InterTime)=='00'
        disp('积分时间为6mS    单位毫秒')
        InterTime=6;
    elseif char(InterTime)=='01'
        disp('积分时间为2mS    单位毫秒')
        InterTime=2;
    elseif char(InterTime)=='10'
        disp('积分时间为4mS    单位毫秒')
        InterTime=4;
    elseif char(InterTime)=='11'
        disp ('积分时间为8mS   单位毫秒')
        InterTime=8;
    end
   SaveInterTime(Inter)=InterTime;
    dot2=dot2+136;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统控制加热器的温度基准的计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dot3=85;
RK=1;
  for  rk=1:row
      w=d(dot3:dot3+11);                                                    %取有效的计算的12列数字  
        RL=13000;
        a=-6.011879920959;
        b=4622.5332031;
        c=-86421.703125;                                                   %定义计算需要的常量与前面一样
 %一般为-30度~+60度,对应0x0DDD~0x0150
         to=1;
       for p=1:4:12                                                   %循环计算3组温度
           X=w(p:p+3);   
           X=hex2dec(X);                                                 %X数值进行进制换算
           R=(RL*X)/(4000-X);                                           %计算R数值
           %T=2*c/(sqrt(power(b,2)-4*c*(a-log10(R)))-1)-273.15;           %计算T数值,单位为摄氏度
           pl1=log(R);
           pl2=a-pl1;
           ql=4*c*pl2;
           ml=power(b,2);
           bb=ml-ql;
           bl=sqrt(bb);
           fenmu=bl-b;
           T=(2*c/fenmu)-273.15;
           SaveWendu2(rk,to)=T;
           to=to+1;
       end
  RK=RK+num;
  end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统黑体控制加热器的温度基准的计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dot4=97;
for htcon=1:row
   heiticon=d(dot4:dot4+3);
   RL=3000;
        a=-4.44812;
        b=4130.69007;
        c=-100906.75161;                                                 %重新定义计算黑体需要的常量
        heiticon=hex2dec(heiticon); 
        R=(RL*heiticon)/(4000-heiticon);                                       %计算黑体R数值
        %T=2*c/(sqrt(power(b,2)-4*c*(a-log10(R)))-1)-273.15;             %计算黑体控制器T数值,单位为摄氏度
           pl1=log(R);
           pl2=a-pl1;
           ql=4*c*pl2;
           ml=power(b,2);
           bb=ml-ql;
           bl=sqrt(bb);
           fenmu=bl-b;
           T=(2*c/fenmu)-273.15;
         SaveHeitiControl(htcon)=T;
         dot4=dot4+135;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%系统测量同源校准值的计算C38与C39%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%    
dot5=107;
for kol=1:row
    w=d(dot5:dot5+7);                   %取相应的列数
    pdg=1;
    for xuan=1:4:8
        xianshi=w(xuan:xuan+3);
        xianshi=hex2dec(xianshi);
        shizhi=xianshi*1.25;          %单位是毫伏
        SaveShizhi(kol,pdg)=shizhi;
        pdg=pdg+1;
    end
    dot5=dot5+136;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%绘图区2部分%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
figure(4)
plot(SaveWendu2,SaveT);    %前10组数据对时间的绘图
title('热控加热器的3组温度变化:参数为SaveWendu2');
xlabel('摄氏度       °C');
ylabel('时间     s');
figure(5)
plot( SaveHeitiControl,SaveT) ;                                %黑体温度对时间绘图
title('黑体加热器控制温度图:参数为SaveHeitiControl')
xlabel('摄氏度       °C');
ylabel('时间     s');
figure(6)
plot(SaveShizhi,SaveT);                                    %各个部分电压的绘图
title('显示电压变化图:参数为SaveShizhi')
ylabel('时间      s');
xlabel('输出电压     mV');
hold on


        
        
         
 




























%b=a'  ;                      %******将矩阵a转置
%c=reshape(a,5619,68);  %******将矩阵a转化为101142行68列的矩阵
%d=hex2dec(c);%******将16进制的字符串转换为整数
%disp (c)                        %  ******显示要求生成的矩阵
%fid=fopen('w2.txt','wt');


%for  w=1:382092
  %   p= mod(w,68); 
    %switch (p)
        %case (p~=0)
   %   if      p~=0;        
%fprintf(fid,'%3d ',c(w));
        %case (p==0)
   %   elseif  p==0;
%fprintf(fid,'%3d\n',c(w));  
       %  end
       
  %  end
%end
%o=eye(68)
%plot(c)
%j=1;
%for s=1:length(c)
    %for k=1:68
       % o(k,s)=c(j);
       % j=j+68;
   % end
%end

%fprintf(fid,'% 3d',c)
%fprintf(fid,'%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d%3d\n',c);
%fprintf(fid,'%3d ',c);
%fclose(fid);
%plot(c)         
  %  j=9;
  % for i=1:5619     % for i=1;i<5619;i=i+1;    
   %  f(i)=c(j);
   %  j=j+68;
  % end
 %%%%%% %%%%%%plot(f)%%
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -