Code covered by the BSD License  

Highlights from
mapping files into working memory

from mapping files into working memory by David Omer
mapping large file resident matrices directly into the working memory of matlab

WriteBinFile(filename,datadim)
function flag = WriteBinFile(filename,datadim)
%
% syntax : flag = WriteExperimentDataStructure(filename,datadim)
%  
% Writes an emprty binary file in the dimentions provided in datadim.
% filename = string
% datadim = cell array. first cell is the mat name, second name are the
%           dimentions.
%           datadim{x} = 'mat name'; datadim{x+1} = [xs ys];

% David B. Omer (c) sept 2006
% _________________________________________________________________________
% 
% header{1} :HeaderLength                             (1X 4bytes  bytes)
%   
% header{2}:MatrixNum                                 (1X4bytes int32)
% header{} :MatrixNameFeildSize                        (1X4bytes int32)
% header{} :MatrixName                                 uchar
% header{} :MatrixColumDim                             (1X4bytes int32)
% header{} :MatrixRawDim                               (1X4bytes int32)
% header{} :MatrixSize                                 (1X4bytes int32)
%                  
%
% ___________________________________________________________________

flag =1;
if (mod(length(datadim),2)>0)
    flag =0;
    return;
end


name ={};
k=1;
for i=1:2:length(datadim)
    name{k} = datadim{i};k=k+1;
end
dim ={};
k=1;
for i=2:2:length(datadim)
    dim{k} = datadim{i};k=k+1;
end


headerSizeArrey =[];
header ={};
dataType={};
header{1} = 0;
headerSizeArrey = [headerSizeArrey,4];
dataType{1}='int32';



header{2} = length(datadim)/2;
headerSizeArrey = [headerSizeArrey,4];
dataType{2} = 'int32';


for i=1:header{2}
    headerCount = length(header)+1;
    header{headerCount} = length(name{i});
    dataType{headerCount}='int32';
    headerSizeArrey = [headerSizeArrey,4];
    headerCount = headerCount+1;
    
    
    header{headerCount} = name{i};
    dataType{headerCount}='uchar';
    headerSizeArrey = [headerSizeArrey,length(name{i})];
    headerCount = headerCount+1;
    
    
    header{headerCount} = dim{i}(1);
    dataType{headerCount}='int32';
    headerSizeArrey = [headerSizeArrey,4];
    headerCount = headerCount+1;
    
    header{headerCount} = dim{i}(2);
    dataType{headerCount}='int32';
    headerSizeArrey = [headerSizeArrey,4];
    headerCount = headerCount+1;  
end


header{1}= sum(headerSizeArrey,2);



filename = [filename,'.bin'];
fid = fopen(filename,'w','ieee-le');
if(fid) 
  
  for i=1:length(header)
      fwrite(fid,header{i},dataType{i});
  end
 
  
  for i=1:length(datadim)/2
      fwrite(fid,zeros(dim{i}),'double');
  end
  
    
  fclose(fid);
else 
    flag =0;
    disp('could not write to file...');
end

Contact us at files@mathworks.com