1function Set = PetscReadBinaryMatlab(filename) 2% PETSCREADBINARYMATLAB - Reads and interprets MATLAB specific lines 3% from the .info files produced by PetscViewerBinaryMatlab 4% 5% Input filename can be the name of the binary file with or without 6% the .info suffix 7% 8% This function returns a single struct containing all objects submitted 9% to the PetscViewerBinaryMatlab viewer. 10 11 matlabHeader = ['%$$ '; '#$$ ']; % string that marks a MATLAB line for evaluation (could be passed) 12 matlabHeaderLen = size(matlabHeader,2); 13 14 if (isempty(strfind(filename,'.info'))) 15 filename = [filename,'.info']; 16 end 17 fid=fopen(filename,'r'); 18 if (fid == -1) 19 error(sprintf('PetscReadBinaryMatlab: cannot load file %s',filename)) 20 end 21 str=fgets(fid); 22 while (ischar(str)) 23 24 % check for output lines that start matlabHeader 25 if strncmp(str,matlabHeader(1,:),matlabHeaderLen) || strncmp(str,matlabHeader(2,:),matlabHeaderLen) 26 str = str(1+matlabHeaderLen:end); 27 28 % check for old-style file open/close commands 29 if strfind(str,'fopen(Set.filename') 30 str = 'fd = PetscOpenFile(Set.filename);'; 31 elseif strfind(str,'if (fd < 0) error'); % ignore this line 32 str = '%'; 33 elseif strfind(str,'fclose(fd)'); 34 str = 'close(fd);'; 35 end 36 37 eval(str); 38 end 39 str=fgets(fid); 40 end 41 fclose(fid); 42 return 43