📄 statns2.m
字号:
% STATNS2.M: sorts water type results from omp2.m and residuals,% latitude and longitude into increasing pressure and% produces new arrays which can be studied as individual stations.%% NOTES: This routine reads output from a file. It does% not require output from omp2.m in the workspace% but takes output from omp2.m from the file which was% generated by that program. It clears the workspace% before it starts.%%---------------------------------------------% This program is part of the OMP package from:% Institut fuer Meereskunde% J. Karstensen % Troplowitzstr. 7% 22529 Hamburg% Germany%% It was written by Matthias Tomczak.%% BUGS: matthias.tomczak@flinders.edu.au%--------------------------------------------%clear all%name variablesvarname = [''];varname(1,1:8) = ['latitude'];varname(2,1:8) = ['longitud'];varname(3,1:8) = ['pressure'];varname(4,1:8) = ['salinity'];varname(5,1:8) = ['potltemp'];varname(6,1:8) = ['dvoxygen'];varname(7,1:8) = ['phosphat'];varname(8,1:8) = ['dvnitrat'];varname(9,1:8) = ['silicate'];varname(10,1:8) = ['potlvort'];varname(11,1:8) = ['masscons'];filname = [''];filname(1,1:8) = [' '];filname(2,1:8) = [' '];filname(3,1:8) = [' '];filname(4,1:8) = ['filsalin'];filname(5,1:8) = ['filptemp'];filname(6,1:8) = ['filoxyge'];filname(7,1:8) = ['filphosp'];filname(8,1:8) = ['filnitra'];filname(9,1:8) = ['filsilic'];filname(10,1:8) = ['filpvort'];filname(11,1:8) = ['filtempe'];errname(1,1:8) = [' '];errname(2,1:8) = [' '];errname(3,1:8) = [' '];errname(4,1:8) = ['errsalin'];errname(5,1:8) = ['errptemp'];errname(6,1:8) = ['erroxyge'];errname(7,1:8) = ['errphosp'];errname(8,1:8) = ['errnitra'];errname(9,1:8) = ['errsilic'];errname(10,1:8) = ['errpvort'];errname(11,1:8) = ['errmcons'];%switch to output directory/folder for input and outputdrswitch('This program reads data from');%define input fileincontrol = input('Which file for data input? [result] ','s');if length(incontrol) > 0 dataset = incontrol;else dataset = 'result';endeval(['load ' dataset]);m = 1;for i = 4:10 if esx(i) == 1 m = m+1; endendfor i = 1:nr_of_wm wmname(i,1:7) = ['wamass' num2str(i)];end%find start and end of stationsif size(press,1)>1 press=press';end statind=[find(diff(press)<0) length(press)]; %define interpolation levelsincontrol = input('Which interpolation file do you want to use? [testlevels] ','s');disp(' ')if length(incontrol) > 0 dataset = incontrol;else dataset = 'testlevels';endeval(['load ' dataset]);llv = length(levels);%check for duplicates and separate them by 0.5 m.for i=2:length(press) if press(i-1) == press(i) press(i-1) = press(i-1) - 0.5; endend%initialize data and result matricesptsort(length(statind)-1,length(levels)) = NaN;for i=1:length(statind)-1 for j=1:length(levels) ptsort(i,j) = NaN; endend%sort data into station formatfor nn = 1:10if esx(nn) == 1 disp(['working on ' varname(nn,1:8) ' extraction']) for i=2:length(statind) j = 1; while press(statind(i-1)+1)>levels(j) & j<length(levels) j = j+1; end k = length(levels); while press(statind(i))<levels(k) & k>1 k = k-1; end sortwrt %stores data in ptsort; see sortwrt.m end ptsort = ptsort'; fout = varname(nn,1:8); sout = sprintf(' %s = ptsort;',fout); eval(sout); ptsort = ptsort';end %esxend %nndisp(' ')for nn = 1:7if esx(nn+3) == 1 disp(['working on ' varname(nn+3,1:8) ' residual extraction']) for i=2:length(statind) j = 1; while press(statind(i-1)+1)>levels(j) & j<length(levels) j = j+1; end k = length(levels); while press(statind(i))<levels(k) & k>1 k = k-1; end if j < k ptsort(i-1,j:k) = interp1(press(statind(i-1)+1:statind(i)), ... err(nn,statind(i-1)+1:statind(i)),levels(j:k))'; end end ptsort = ptsort'; fout = errname(nn+3,1:8); sout = sprintf(' %s = ptsort;',fout); eval(sout); ptsort = ptsort';end %esxend %nndisp(['working on ' varname(11,1:8) ' residual extraction'])for i=2:length(statind) j = 1; while press(statind(i-1)+1)>levels(j) & j<length(levels) j = j+1; endk = length(levels); while press(statind(i))<levels(k) & k>1 k = k-1; end if j < k ptsort(i-1,j:k) = interp1(press(statind(i-1)+1:statind(i)), ... err(m,statind(i-1)+1:statind(i)),levels(j:k))'; endendptsort = 100 * ptsort';fout = errname(11,1:8);sout = sprintf(' %s = ptsort;',fout);eval(sout);ptsort = ptsort';disp(' ')for nn = 1:nr_of_wm disp(['working on ' tit_index(5*(nn-1)+1:5*(nn-1)+5) ' extraction']) for i=2:length(statind) j = 1; while press(statind(i-1)+1)>levels(j) & j<length(levels) j = j+1; end k = length(levels); while press(statind(i))<levels(k) & k>1 k = k-1; end if j < k ptsort(i-1,j:k) = interp1(press(statind(i-1)+1:statind(i)), ... A(nn,statind(i-1)+1:statind(i)),levels(j:k))'; end end ptsort = 100 * ptsort'; fout = wmname(nn,1:7); sout = sprintf(' %s = ptsort;',fout); eval(sout); ptsort = ptsort';end %esxend %nnclear ptsort nn fout sout wantdisp(' ')disp('Extraction finished.')disp('Run displvar.m to see individual stations.')clear ans lat long oxy ph ni si press ptemp pvort temp sal tit_index statind
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -