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