Matlab解析二进制光谱文件

通过以下方法可以读取尼高力.spa格式光谱、spc格式光谱和布鲁克.o格式光谱数据。

1、借助windows旗下的UltraEdit文本编辑器;

2、利用UltraEdit打开二进制光谱文件;

3、寻找吸光度向量开始指针位置:

(1)找到“3E”,指针开始位置为第一个“3E”的前3个位置,如下图所示。

fseek(fid,hex2dec('47c'),'bof');
fread(fid,NumPoint,’single’);%读取的数据格式通常是单精度浮点型

(2)如果第一种情况失效,找“Ydata”字符空两隔开始读取;

4、寻找开始波长和结束波长;通常找到“FXV”和“LXV”两个标识符,然后将指针定位到空5格的位置开始读取。

     FXV…..

     LXV…..

fseek(fid,hex2dec('94b0'),'bof'); % 找到开始波长点指针位置
FirstPoint=fread(fid,1,'double'); % 读取开始波长点,有时候是单精度浮点型,有时候是双精度浮点型
fseek(fid,hex2dec('94c0'),'bof'); % 找到结束波长点指针位置
LastPoint=fread(fid,1,'double');  % 读取结束波长点,有时候是单精度浮点型,有时候是双精度浮点型

 5、寻找波长点数;找到“NPT”字符,然后将指针定位到5个字符后开始读取。读取数据类型为“int32”整型。

fseek(fid,hex2dec('94a4'),'bof');%
NumPoint=fread(fid,1,'int32'); % 

6.读取赛默飞世尔近红外光谱.spa格式的光谱完整代码如下:

clc;clear all
%%
fid=fopen('E:\1.spa','rb');
fseek(fid,hex2dec('234'),'bof'); % 找到波长点数的指针位置
NumPoint=fread(fid,1,'int32');   % 读取“int32”型波长点数
fseek(fid,hex2dec('240'),'bof'); % 找到开始波长点和结束波长点指针位置
FirstPoint=fread(fid,1,'single');% 读取开始波长点
LastPoint=fread(fid,1,'single'); % 读取结束波长点
Interval=(FirstPoint-LastPoint)/(NumPoint-1); % 波点间隔波数
wavenumber=linspace(LastPoint,FirstPoint,NumPoint)'; % 生成波长点数
fseek(fid,hex2dec('3b8'),'bof'); % 找到吸光度指针(主要是找第7位的数为“3E”)
y=fread(fid,NumPoint,'single');  % 读取波长点数对应的吸光度向量
figure
plot(wavenumber,y);

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NIR_cloud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值