c*******g 发帖数: 475 | 1 【 以下文字转载自 Chemistry 讨论区 】
发信人: cooooldog ( b), 信区: Chemistry
标 题: 如何知道Nicolet红外谱图文件*.spa的二进制格式
发信站: BBS 未名空间站 (Sat May 22 09:25:15 2010, 北京)
希望用C或者其它类似语言
以直接读取二进制文件的形式
读Nicolet的*.spa红外谱图文件
这类文件的格式是公开的吗?
何处有指南之类的文件?
谢谢 | c*******g 发帖数: 475 | 2 搞定
clc
filename='c:\Documents and Settings\User Name\My Documents\Spectral File.SPA
';
fid=fopen(filename,'r');
% Find the points number
fseek(fid,hex2dec('234'),'bof');
Number_of_DataPoints=fread(fid,1,'int32');
%Find the maximum and minimum of Wavenumber (cm-1) range
fseek(fid,576,'bof');
Maximum_Wavenumber=fread(fid,1,'single');
Minimum_Wavenumber=fread(fid,1,'single');
Interval=(Maximum_Wavenumber-Minimum_Wavenumber)/(Number_of_DataPoints-1);
Wavenumber=linspace(Minimum_Wavenumber,Maximum_Wa
【在 c*******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 Chemistry 讨论区 】 : 发信人: cooooldog ( b), 信区: Chemistry : 标 题: 如何知道Nicolet红外谱图文件*.spa的二进制格式 : 发信站: BBS 未名空间站 (Sat May 22 09:25:15 2010, 北京) : 希望用C或者其它类似语言 : 以直接读取二进制文件的形式 : 读Nicolet的*.spa红外谱图文件 : 这类文件的格式是公开的吗? : 何处有指南之类的文件? : 谢谢
| D********g 发帖数: 533 | 3 感谢分享啊~ :)
SPA
【在 c*******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 搞定 : clc : filename='c:\Documents and Settings\User Name\My Documents\Spectral File.SPA : '; : fid=fopen(filename,'r'); : % Find the points number : fseek(fid,hex2dec('234'),'bof'); : Number_of_DataPoints=fread(fid,1,'int32'); : %Find the maximum and minimum of Wavenumber (cm-1) range : fseek(fid,576,'bof');
| c*******g 发帖数: 475 | 4 这个还有点小问题
*.spa谱图如果不修改尚可
用Omnic修改过的可能出错
【在 D********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 感谢分享啊~ :) : : SPA
| c*******g 发帖数: 475 | 5 我把程序修改了一下
现在应该好用了, 至少读数据应该没问题了
%reverse engineering *.spa
clc
filename='c:\Documents and Settings\user
\My Documents\051109 sample B.SP
A';
fid=fopen(filename,'r');
% Find the points number
fseek(fid,hex2dec('234'),'bof');
Number_of_DataPoints=fread(fid,1,'int32');
%Find the maximum and minimum of Wavenumber (cm-1) range
fseek(fid,576,'bof');
Maximum_Wavenumber=fread(fid,1,'single');
Minimum_Wavenumber=fread(fid,1,'single');
Interval=(Maximum_Wavenumber-Minimum_Wavenumber)/(Number_of_DataPoints-
【在 D********g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 感谢分享啊~ :) : : SPA
|
|