No BSD License  

Highlights from
Memory mapping matrices

from Memory mapping matrices by David B. Omer
memory mapping and accessing matrices

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