如果你要读取的sac文件名是“1.sac”,那么主程序仅有如下一行代码,即可将sac中的地震数据读取到变量data中。
data = rsaca(‘1.sac’);
其中,子函数rsaca的代码如下:
function [varargout] = rsaca(varargin)
endian = ‘big-endian’;
endian = ‘little-endian’;
for nrecs = 1:nargin
sacfile = varargin{nrecs};
if strcmp(endian,‘big-endian’)
fid = fopen(sacfile,‘r’,‘ieee-be’);
elseif strcmp(endian,‘little-endian’)
fid = fopen(sacfile,‘r’,‘ieee-le’);
end
for trial = 1:2
sprintf(‘debug: trial=%d’, trial);
for i=1:70
h(i) = fread(fid,1,‘single’);
end
for i=71:105
h(i) = fread(fid,1,‘int32’);
end
if (h(77) == 4 | h(77) == 5)
message = strcat(‘NVHDR = 4 or 5. File: "’,sacfile,‘" may be from an old version of SAC.’);
error(message)
elseif h(77) ~= 6
if (trial == 2)
message &