function [t,v] = loadwfm(filename); % This function loads the binary data from a Tektronix ".WFM" % file. The Tektronix TDS series oscilloscopes use a binary % datafile to store oscilloscope waveforms. The file format % is documented in the accompanying file, 'tdsffmt.doc', which % was obtained from the tektronix website. % % USAGE % % [t,v] = loadwfm(filename); % % INPUT % % filename - name of Tektronix WFM file % % OUTPUT % % t - evenly spaced vector of times (s) % v - corresponding vector of measured voltages (V) FID = fopen(filename,'r','ieee-be'); c = fread(FID,1,'uchar'); if (c == 'L') fread(FID,6,'uchar'); else fread(FID,7,'uchar'); end ndigits = fread(FID,1,'uchar'); ndigits = char(ndigits) - '0'; bytecount = fread(FID,ndigits,'uchar'); magicnum = fread(FID,1,'int32'); wfmlength = fread(FID,1,'int32'); vertPos = fread(FID,1,'double'); horzPos = fread(FID,1,'double'); vertZoom = fread(FID,1,'double'); horzZoom = fread(FID,1,'double'); acqMode = fread(FID,1,'int16'); minMaxFormat = fread(FID,1,'int16'); duration = fread(FID,1,'double'); vertCpl = fread(FID,1,'int16'); horzUnit = fread(FID,1,'int16'); horzScalePerPoint = fread(FID,1,'double'); vertUnit = fread(FID,1,'int16'); vertOffset = fread(FID,1,'double'); vertPos = fread(FID,1,'double'); vertGain = fread(FID,1,'double'); recordLength = fread(FID,1,'int32'); trigPos = fread(FID,1,'int16'); wfmHeaderVersion = fread(FID,1,'int16'); sampleDensity = fread(FID,1,'int16'); burstSegmentLength = fread(FID,1,'int16'); sourceWfm = fread(FID,1,'int16'); videoTrigLineNumber = fread(FID,1,'int16'); field = fread(FID,1,'int16'); frameSize = fread(FID,1,'int16'); lineWidth = fread(FID,1,'double'); standard = fread(FID,1,'int16'); tsHeader = fread(FID,6,'int16'); preamble = fread(FID,16,'int16'); curvedata = fread(FID,recordLength,'int16'); postamble = fread(FID,16,'int16'); checksum = fread(FID,1,'int16'); fclose(FID); t = ((0:recordLength-1)' - recordLength*trigPos/100.0)*horzScalePerPoint; v = curvedata*vertGain/25.0/256.0 + vertOffset - (vertPos*vertGain);