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