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

  2. 如何阅读?

4

4 回答 4

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  
于 2014-04-01T15:10:35.957 回答
2

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

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

fseek(fid,spectral_offset,'bof'); 
spectrum=fread(fid,Number_of_DataPoints,'single');
于 2015-10-20T13:05:14.410 回答
0

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

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

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

:)

于 2018-08-03T12:49:19.360 回答
0

Matlab实现

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 的文件。

于 2017-02-27T06:14:50.913 回答