如何从扩展名为* .spa的Nicolet FTIR光谱文件中读取数据

时间:2010-05-22 06:16:12

标签: binaryfiles

  1. * .spa二进制文件格式是商业机密吗?但Perkin Elmer向公众发布了* .sp格式;

  2. 怎么读?

4 个答案:

答案 0 :(得分:3)

我知道这个帖子现在有点老了,但我最近需要阅读SPA文件,并希望分享我是如何设法处理它们的。
如cooooldog所述,0x41c偏移量不是标准的。但是,此偏移量在spa文件本身中编码 编辑spa文件时,开头有一个短标题,然后是多个零。从0x11e开始是非零值 以下是我设法找到光谱文件的正确偏移量的方法:
从0x11e开始,我开始读取int32值。似乎数据偏移在此值之前编码:54 18 00 00(十进制为6228) 编辑:我收到了一组新的spa文件,其中搜索的模式不再是54 18 00 00但是40 61 00 00(24896),所以这可能也不是标准的。事实上,起始地址似乎在spa文件中以172h或182h编码。我仍然需要找到它的方法。
因此,通过查找6228,在文件中稍后查找数据所需的偏移量是在此值6228之前找到的整数。
如果你继续编辑你的spa文件,你应该找到一个32位编码的浮点值,放在一堆文本之后 从现在开始,只需将0x41c替换为找到的地址即可读取这些值 如果这可以帮助任何人...

function address = getStart(filename)  
    try  
        % Open the file  
        fid=fopen(filename,'r');  
        % Jump where the values become interesting  
        fseek(fid,hex2dec('11e'),'bof');  
        % Pattern we're looking for  
        pattern = 6228;  
        suspect = 0;  
        while suspect~=pattern  
            oldSuspect = suspect;  
            suspect    = fread(fid,1,'int32');  
        end  
        % The correct address is just before our current suspect  
        address = oldSuspect;  
        % Close the file  
        fclose(fid);  
    catch ex  
        address = 0;  
        disp(ex)  
end  

答案 1 :(得分:2)

我找到了光谱偏移设置的位置,它位于386位置:

fseek(fid,386,'bof'); 
spectral_offset = fread(fid,1,'int32')

fseek(fid,spectral_offset,'bof'); 
spectrum=fread(fid,Number_of_DataPoints,'single');

答案 2 :(得分:0)

<强> Matlab implementation

https://cn.mathworks.com/matlabcentral/fileexchange/57904-loadspectra

  

您需要导入光谱文件以分析FTIR和NIR吸光度数据。此函数将.SPA格式文件中的数据加载到矩阵中,并将光谱组织成列。

C / C ++实现:

Github上有一个小型的开源项目:

https://github.com/aitap/spa2txt

  

该程序读取Nicolet FTIR光谱文件(* .spa扩展名)并生成   文本文件,第一行对应于标题,每隔一行   格式为:波数,标签,吸光度,换行符。

     

用法:将* .spa文件作为命令行参数提供。名称为* .spa.txt的文件将   被创造。

答案 3 :(得分:0)

'如何处理.spa(频谱分析仪输出文件)usnig matlab' 好吧,我认为处理读取.spa文件的最佳方法是,首先使用“记事本”文件将其转换为txt,然后使用导入工具将其导入到matlab,该工具为您提供了大量功能,从制表符定界到以自定义分隔 之后,您需要选择.spa文件中的频率和接收功率 有关更多详细信息,请检查

https://nl.mathworks.com/videos/importing-data-from-text-files-interactively-71076.html

这对我处理.spa频谱分析仪输出文件很有帮助

:)