Created
June 24, 2014 03:37
-
-
Save dzonesasaki/a54018d6f737d5c85562 to your computer and use it in GitHub Desktop.
isf read
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function [rtnData, headData] = isfread (filename) | |
% * Written 1/25/2009 by Wenwei Qiao * | |
% * modified by Dzone 140624_10:40 * | |
fileID = fopen(filename,'r'); | |
% read ASCII header | |
header_tmp = fread(fileID, 500)'; | |
header = char(header_tmp); | |
headData = parseHead(header); | |
fseek(fileID, 0, 'eof'); | |
dataOffset = - headData.NR_P*headData.BYT_N; | |
fseek(fileID, dataOffset, 'cof'); | |
if (headData.BYT_N==1) | |
inData = fread(fileID, headData.NR_P, 'int8'); | |
else | |
inData = fread(fileID, headData.NR_P, 'int16', 'ieee-be'); | |
end | |
fclose(fileID); | |
lowerXLimit = headData.XZE; | |
upperXLimit = ((headData.NR_P-1)* headData.XIN + headData.XZE); | |
rtnData.x = [lowerXLimit : headData.XIN : upperXLimit]'; | |
rtnData.y = headData.YMU*(inData-headData.YOF) + headData.YZE; | |
% parseHead - used to parse and convert the header data into a more | |
% useful structure. | |
function headData = parseHead(header) | |
headData.NR_P = getParamNum(header, 'NR_PT' ); | |
headData.BYT_N = getParamNum(header, 'BYT_NR' ); | |
headData.BIT_N = getParamNum(header, 'BIT_NR' ); | |
headData.XIN = getParamNum(header, 'XINCR' ); | |
headData.XZE = getParamNum(header, 'XZERO' ); | |
headData.PT_O = getParamNum(header, 'PT_OFF' ); | |
headData.YMU = getParamNum(header, 'YMULT' ); | |
headData.YOF = getParamNum(header, 'YOFF' ); | |
headData.YZE = getParamNum(header, 'YZERO' ); | |
headData.YSCALE = getParamNum(header, 'VSCALE' ); | |
headData.HSCALE = getParamNum(header, 'HSCALE' ); | |
headData.YPOS = getParamNum(header, 'VPOS' ); | |
headData.YOFFSET = getParamNum(header, 'VOFFSET' ); | |
headData.HDELAY = getParamNum(header, 'HDELAY' ); | |
headData.ENC = getParamStr(header, 'ENCDG', ';'); | |
headData.BN_F = getParamStr(header, 'BN_FMT', ';'); | |
headData.BYT_O = getParamStr(header, 'BYT_OR', ';'); | |
headData.WFI = getParamStr(header, 'WFID', '"'); | |
headData.PT_F = getParamStr(header, 'PT_FMT', ';'); | |
headData.XUN = getParamStr(header, 'XUNIT', '"'); | |
headData.YUN = getParamStr(header, 'YUNIT', '"'); | |
headData.CURV = getCurvNum(header); | |
function rtnNum = getParamNum (headStr, cmdStr) | |
cmdLoc = findstr(headStr, cmdStr); | |
if (cmdLoc) | |
headStr_tmp = headStr(cmdLoc(1)+length(cmdStr)+1 : length(headStr)) ; | |
[tmp, remJunk] = strtok(headStr_tmp,';') ; | |
rtnNum = str2num(tmp); | |
else | |
rtnNum =[]; | |
end | |
function rtnStr = getParamStr(headStr, cmdStr, dlm) | |
cmdLoc = findstr(headStr, cmdStr); | |
if (cmdLoc) | |
headStr_tmp = headStr(cmdLoc(1)+length(cmdStr)+1 : length(headStr)) ; | |
[rtnStr,remStr] = strtok(headStr_tmp, dlm) ; | |
else | |
rtnStr=[]; | |
end | |
function rtnNum = getCurvNum (headStr) | |
cmdStr='CURV #'; | |
cmdLoc = findstr(headStr, cmdStr); | |
if (cmdLoc) | |
headStr_tmp = headStr(cmdLoc(1)+length(cmdStr) : length(headStr)) ; | |
curvNum_tmp = headStr_tmp(1); | |
curvNum = str2num(curvNum_tmp); | |
tmp = headStr_tmp(2:curvNum+1) ; | |
rtnNum = str2num(tmp); | |
else | |
rtnNum=[]; | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment