function mat2rwl(data,years,seriesnames,filename) % MAT2RWL Write raw ring measurements to Tucson format % % mat2rwl(data,years,seriesnames,filename) % % This function writes a matrix into a Tucson decadal format % ASCII file. Missing values should be 'NaN'. [r,nseries] = size(data); maxYear = max(years); minYear = min(years); fid = fopen(filename,'wt'); for i=1:nseries thisSeriesLength = length(data(~isnan(data(:,i)),i)); % starting point and first decade startPointer = min(find(~isnan(data(:,i)))); thisStartYear = years(min(find(~isnan(data(:,i))))); firstDecade = ceil(thisStartYear/10)*10; firstDecadePointer = find(years==firstDecade); endPointer = max(find(~isnan(data(:,i)))); thisEndYear = years(max(find(~isnan(data(:,i))))); lastDecade = floor(thisEndYear/10)*10; lastDecadePointer = find(years==lastDecade); % first (incomplete) line for a given tree ... fprintf(fid, '%-8s%4i%6i%6i%6i%6i%6i%6i%6i%6i%6i%6i\n',seriesnames{i}(:,:),[thisStartYear data(startPointer:firstDecadePointer-1,i)']); %write data to file fprintf(fid,'\n') % ... complete decades for that tree ... interveningDecades = [firstDecade:10:lastDecade]'; for j=1:length(interveningDecades)-1; P1 = find(years==interveningDecades(j)) P2 = find(years==interveningDecades(j+1))-1 [i j P1 P2] fprintf(fid, '%-8s%4i%6i%6i%6i%6i%6i%6i%6i%6i%6i%6i\n',seriesnames{i}(:,:),[interveningDecades(j) data(P1:P2,i)']); %write data to file end % ... last (incomplete) line for that tree ... fprintf(fid, '%-8s%4i%6i%6i%6i%6i%6i%6i%6i%6i%6i%6i\n',seriesnames{i}(:,:),[lastDecade data(lastDecadePointer:endPointer,i)' 999]); %write data to file fprintf(fid,'\n') end fclose(fid); % close file close file