有可能阅读地震数据或将IBM float32 IEEE浮点32在MATLAB 7.8 (R2009a) ?

8视图(30天)
我处理地震数据文件格式化根据勘探地球物理学家协会的标准,相当于IBM 360浮动32。
我想在MATLAB函数将IBM float32格式转换为IEEE浮点32或从文件中读取IBM 32浮动。

接受的答案

MathWorks支万博1manbetx持团队
MATLAB 7.8 (R2009a)没有一个函数,将IBM float32格式转换为IEEE浮点32格式或从文件中读取IBM float32。
作为一个解决方案,使用MATLAB代码下面将IBM float32格式IEEE浮点32的格式。MathWorks MATLAB代码不是官方支持,公司使用它,或修改您万博1manbetx的特定需求。
- - - - - - - - - - - - - - - - - - -开始:ibm2ieee。m - - - - - - - - - - - - - - - - - - - - - - - - -
函数d = ibm2ieee (ibmf)
%的名字:ibm2ieee
%文摘:IBM / 360 32位浮点数的转换矩阵
% IEEE双打。
%
% IBMF是IBM / 360 32位浮点数的矩阵
%存储为一个32位无符号大端整数
%在MATLAB的两倍。
%
% 360 IBM / 32位浮点数的格式是:
%
% 7位指数24位分数的迹象
%的基础是16。小数点是
%的左边部分。指数是
64年+ %的偏见。
%
%的基本思想是使用浮点
%的各种领域。
%
% ieee =符号* 16 ^(指数- 64)*分数/ 16 ^ 6
%
%:马丁Knapp-Cordes
% MathWorks公司。
%
% (s)日期:95年6月28日,29岁
% $修订:1.2 $ $日期:1995/06/29 14:50:03美元
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
%
如果(输入参数个数~ = 1)
错误(错误的数量的参数。);
elseif(isempty (ibmf))
错误(的参数是一个空矩阵);
结束
%
aibmf = sprintf (' % 08年x ',ibmf);
%
% hexd(1) - 1日十六进制数第一位,三位高阶指数
% hexd(2) - 2十六进制数的低阶指数
% hexd (3) - 3 rd-8th十六进制数字的分数
%
hexd = sscanf (aibmf,' % 1 x % 1 x % 6 x ',3正);
d = (1 - (hexd (: 1) > = 8)。* 2)。*
16 . ^ (hexd (1:)——(hexd (: 1) > = 8)。* 8)。* 16 + hexd (2:)
- 70)。* hexd (3:);
d =重塑(d、大小(ibmf));
- - - - - - - - - - - - - - - - - - - - - - - -结束:ibm2ieee。m - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
这里有一个例子在ibm2ieee如何使用。m文件。
假设你有一个文件,其中包含IBM浮动32二进制数据格式,拨打了5702。凹陷,那么您必须使用以下打开外部文件和从文件中读调用读取文件:
fid = fopen (“5702.赛格”,“r”,“b”);
%
%读第一数据记录——IBM / 360 32位浮动格式
%读无符号整数(32位)。
%转换为使用ibm2ieee IEEE双打。
%
%的大小——阅读的元素数量
ibm1 =从文件中读(支撑材、大小“单位”);
ieee1 = ibm2ieee (ibm1);

更多的答案(0)

s manbetx 845


释放

R2009a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!