function [data_array,data_mat,nrows,ncols] = read_pp(inputfile,n); % ----- Read PRECIS output file (PP format) ----- % % SYNTAX: % [data_array, data_mat, nrows, ncols] = read_pp(inputfile) % % INPUT: % inputfile - Input file name with .pp extension. % % OUTPUT: % data_all - data in matrix form with Z/T values for diff pressure columnwise. % nrows - number of rows(latitudes). % nclos - number of columns(longitudes). % NOTE - First 5 pressure levels: 1000, 925, 850, 700, 600 mb. % % Author: Ambarish Karmalkar, CSRC, UMass Amherst. % Last Updated: January 3, 2006. % --------------------------------- if (nargin < 2), n = 1; end % Reading binary file. fid = fopen(inputfile,'rb'); for i=1:n % Read the header. h1(i) = fread(fid,1,'int32'); % Length start - 4 bit int header1 = fread(fid,45,'int32') % 45 words int header2 = fread(fid,19,'float32') % 19 words float h3(i) = fread(fid,1,'int32'); % Length end - 4 bit int % Read data size from the header. data_length = header1(15,1) nrows = header1(18,1); ncols = header1(19,1); yr = header1(1,1) - 1900; % Read data. h4(i) = fread(fid,1,'int32'); % Length start - 4 bit int data_array1 = fread(fid,data_length,'float32'); % Read data h5(i) = fread(fid,1,'int32'); % Length end - 4 bit int data_array(:,i) = data_array1; end fclose(fid); % Data into matrix form [row,column]. for i = 1:n data_mat(:,:,i) = reshape(data_array(:,i)',ncols,nrows)'; end