Difference between revisions of "Prr split file"
Jump to navigation
Jump to search
(Created page with "back to C-OPS/CERBERUS Mfiles") |
|||
| Line 1: | Line 1: | ||
| + | <pre> | ||
| + | function prr_split_file(filename) | ||
| + | %Created by Erik Stassinos 10/29/2013 | ||
| + | %This function takes the input single lcd and then splits it into up into | ||
| + | %multiple files... one cast per file | ||
| + | %looks at downcast matrix and splits the file accordingly | ||
| + | |||
| + | |||
| + | fid = fopen(filename); | ||
| + | |||
| + | %============== get the indexes of data to split the file | ||
| + | [in,mer,dep] = index1(filename); | ||
| + | ic = size(in,1); | ||
| + | %============== | ||
| + | |||
| + | |||
| + | |||
| + | %==============create coppies of the filters used list | ||
| + | |||
| + | tmp_fltr = fopen(['fltr',filename],'w+'); | ||
| + | |||
| + | while ~feof(fid) | ||
| + | chkline =fgets(fid); | ||
| + | %fprintf(tmp_fltr,'%s',chkline); | ||
| + | if strncmp(chkline,'<filters_used>',6)==1 | ||
| + | %break | ||
| + | %end | ||
| + | while ~feof(fid) | ||
| + | chkline =fgets(fid); | ||
| + | fprintf(tmp_fltr,'%s',chkline); | ||
| + | end | ||
| + | end | ||
| + | end | ||
| + | fclose(tmp_fltr); | ||
| + | %============== | ||
| + | %==============end create filter copies | ||
| + | |||
| + | |||
| + | |||
| + | %============== read through the original file to create copies of header | ||
| + | %==============to write | ||
| + | frewind(fid); | ||
| + | tmp_hdr = fopen(['hdr',filename],'w+'); | ||
| + | |||
| + | while ~feof(fid) | ||
| + | chkline =fgets(fid); | ||
| + | fprintf(tmp_hdr,'%s',chkline); | ||
| + | if strncmp(chkline,'<data>',6)==1 | ||
| + | break | ||
| + | end | ||
| + | end | ||
| + | fclose(tmp_hdr); | ||
| + | %============== | ||
| + | %============== end read through to create header file | ||
| + | |||
| + | |||
| + | %============== Read the data to make a temp data file of each indexic = size(in,1); | ||
| + | %============== | ||
| + | disp('number of files to create = ') | ||
| + | ic./2 | ||
| + | |||
| + | tempmat = ['tempm',filename]; | ||
| + | tm = fopen(tempmat,'w+'); | ||
| + | |||
| + | for i = 1:ic/2 %generate mat file names for each cast to break up | ||
| + | mname = strcat('mat_',num2str(i),'_',filename); | ||
| + | mnamelist(i,:) = mname; | ||
| + | end | ||
| + | l =0; | ||
| + | while strncmp(l,'<filters_used>',14) ~=1 | ||
| + | l = fgets(fid); | ||
| + | if strncmp(l,'<filters_used>',14) == 1 | ||
| + | break | ||
| + | end | ||
| + | fprintf(tm,l); | ||
| + | end | ||
| + | fclose(tm); | ||
| + | mat = load(tempmat); | ||
| + | width = length(mat(1,:)); | ||
| + | count =1; | ||
| + | for lp = 1:2:ic | ||
| + | step1 = lp; | ||
| + | step2 = lp+1; | ||
| + | for ij = in{step1}:1:in{step2}; | ||
| + | castmatrix(ij-(in{step1}-1),:) = mat(ij,1:width); %starts from 1 and goes to in2 | ||
| + | end | ||
| + | dlmwrite(mnamelist(count,:),castmatrix,'delimiter',' ','precision','%.5d'); | ||
| + | count = count +1; | ||
| + | end | ||
| + | |||
| + | %============= | ||
| + | %=============end make individual matrix files | ||
| + | |||
| + | |||
| + | %=============create new LCDs | ||
| + | %============= | ||
| + | tmp_hdr = fopen(['hdr',filename],'r'); | ||
| + | tmp_fltr = fopen(['fltr',filename],'r'); | ||
| + | %new list file | ||
| + | splitlist = fopen('slist.txt','r+'); | ||
| + | if splitlist == -1 | ||
| + | splitlist = fopen('slist.txt','w+'); | ||
| + | else | ||
| + | fseek(splitlist,0,1);%puts line pointer at end of file to write | ||
| + | end | ||
| + | for lp =1:ic/2 | ||
| + | new_f = fopen([filename,'.',num2str(lp)],'w+'); | ||
| + | while ~feof(tmp_hdr) | ||
| + | rline = fgets(tmp_hdr); | ||
| + | fprintf(new_f,rline); | ||
| + | end | ||
| + | matfile = fopen(mnamelist(lp,:)); | ||
| + | |||
| + | while ~feof(matfile) | ||
| + | mline = fgets(matfile); | ||
| + | fprintf(new_f,mline); | ||
| + | end | ||
| + | fprintf(new_f,'%s\n','<filters_used>') | ||
| + | |||
| + | while ~feof(tmp_fltr) | ||
| + | rline = fgets(tmp_fltr); | ||
| + | fprintf(new_f,rline); | ||
| + | end | ||
| + | |||
| + | frewind(tmp_hdr); | ||
| + | frewind(tmp_fltr); | ||
| + | fprintf(splitlist,'%s\n',[filename,'.',num2str(lp)]) | ||
| + | |||
| + | end | ||
| + | |||
| + | %=========== | ||
| + | %===========end make new lcd's | ||
| + | |||
| + | delete mat* | ||
| + | delete hdr* | ||
| + | delete tmp* | ||
| + | |||
| + | fclose all | ||
| + | |||
| + | </pre> | ||
| + | |||
| + | |||
| + | |||
back to [[C-OPS/CERBERUS Mfiles]] | back to [[C-OPS/CERBERUS Mfiles]] | ||
Latest revision as of 16:23, 13 February 2014
function prr_split_file(filename)
%Created by Erik Stassinos 10/29/2013
%This function takes the input single lcd and then splits it into up into
%multiple files... one cast per file
%looks at downcast matrix and splits the file accordingly
fid = fopen(filename);
%============== get the indexes of data to split the file
[in,mer,dep] = index1(filename);
ic = size(in,1);
%==============
%==============create coppies of the filters used list
tmp_fltr = fopen(['fltr',filename],'w+');
while ~feof(fid)
chkline =fgets(fid);
%fprintf(tmp_fltr,'%s',chkline);
if strncmp(chkline,'<filters_used>',6)==1
%break
%end
while ~feof(fid)
chkline =fgets(fid);
fprintf(tmp_fltr,'%s',chkline);
end
end
end
fclose(tmp_fltr);
%==============
%==============end create filter copies
%============== read through the original file to create copies of header
%==============to write
frewind(fid);
tmp_hdr = fopen(['hdr',filename],'w+');
while ~feof(fid)
chkline =fgets(fid);
fprintf(tmp_hdr,'%s',chkline);
if strncmp(chkline,'<data>',6)==1
break
end
end
fclose(tmp_hdr);
%==============
%============== end read through to create header file
%============== Read the data to make a temp data file of each indexic = size(in,1);
%==============
disp('number of files to create = ')
ic./2
tempmat = ['tempm',filename];
tm = fopen(tempmat,'w+');
for i = 1:ic/2 %generate mat file names for each cast to break up
mname = strcat('mat_',num2str(i),'_',filename);
mnamelist(i,:) = mname;
end
l =0;
while strncmp(l,'<filters_used>',14) ~=1
l = fgets(fid);
if strncmp(l,'<filters_used>',14) == 1
break
end
fprintf(tm,l);
end
fclose(tm);
mat = load(tempmat);
width = length(mat(1,:));
count =1;
for lp = 1:2:ic
step1 = lp;
step2 = lp+1;
for ij = in{step1}:1:in{step2};
castmatrix(ij-(in{step1}-1),:) = mat(ij,1:width); %starts from 1 and goes to in2
end
dlmwrite(mnamelist(count,:),castmatrix,'delimiter',' ','precision','%.5d');
count = count +1;
end
%=============
%=============end make individual matrix files
%=============create new LCDs
%=============
tmp_hdr = fopen(['hdr',filename],'r');
tmp_fltr = fopen(['fltr',filename],'r');
%new list file
splitlist = fopen('slist.txt','r+');
if splitlist == -1
splitlist = fopen('slist.txt','w+');
else
fseek(splitlist,0,1);%puts line pointer at end of file to write
end
for lp =1:ic/2
new_f = fopen([filename,'.',num2str(lp)],'w+');
while ~feof(tmp_hdr)
rline = fgets(tmp_hdr);
fprintf(new_f,rline);
end
matfile = fopen(mnamelist(lp,:));
while ~feof(matfile)
mline = fgets(matfile);
fprintf(new_f,mline);
end
fprintf(new_f,'%s\n','<filters_used>')
while ~feof(tmp_fltr)
rline = fgets(tmp_fltr);
fprintf(new_f,rline);
end
frewind(tmp_hdr);
frewind(tmp_fltr);
fprintf(splitlist,'%s\n',[filename,'.',num2str(lp)])
end
%===========
%===========end make new lcd's
delete mat*
delete hdr*
delete tmp*
fclose all
back to C-OPS/CERBERUS Mfiles