📄 chuli.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 + -