function [timeseries,years,seriesnames] = rwl2mat(filename) % RWL2MAT Read Tucson formatted raw ring width measurements into Matlab % % [timeseries,years,seriesnames] = rwl2mat(filename) % % % Open existing file in text mode fid=fopen(filename,'rt'); headerlines = 0; % read in data [data]=textscan(fid,'%8s%f%f%f%f%f%f%f%f%f%f%f%*s','TreatAsEmpty',' ','EmptyValue',NaN); % what if there is a header? while isempty(data{2}) || isempty(data{3}) headerlines = headerlines + 1; [data]=textscan(fid,'%8s%f%f%f%f%f%f%f%f%f%f%f%*s','Headerlines',headerlines,'EmptyValue',NaN); end datamatrix = [data{3} data{4} data{5} data{6} data{7} data{8} data{9} data{10} data{11} data{12}]; decades = data{2}; [cbR,cbC] = find(datamatrix==999 | datamatrix == -9999); cbRx = find(decades(cbR)==max(decades)); minimumYear = min(decades); latestCore = max(sum(~isnan(datamatrix(cbR(cbRx),:)),2)); maximumYear = max(decades) + latestCore; years = [minimumYear:maximumYear]'; timeseries = NaN(length(years),length(cbR)); cbR = sort([cbR]); seriesnames = data{1}(cbR); % append a zero so we can loop over the series cbR = sort([0; cbR]); % now, read each individual into a timeseries matrix for i=1:length(cbR)-1; thisStartYear = find(years==decades(cbR(i)+1)); thisCore = datamatrix(cbR(i)+1:cbR(i+1),:)'; thisCore=thisCore(:); thisCore = thisCore(~isnan(thisCore) & (thisCore~=999 & thisCore ~= -9999)); timeseries(thisStartYear:thisStartYear+length(thisCore)-1,i) = thisCore; end fclose(fid);