| [19012] | 1 | function matrix=resultstomatrix(md,resultname,field,varargin)
|
|---|
| 2 | %RESULTSTOMATRIX - go grab in the model results structure the vector results for each time step (which is not empty),
|
|---|
| 3 | % and line them up in a matrix. If time vector is provided, resample.
|
|---|
| 4 | %
|
|---|
| 5 | % Usage:
|
|---|
| 6 | % matrix=resultstomatrix(model,solutioname,fieldname)
|
|---|
| 7 | %
|
|---|
| 8 | % Available options:
|
|---|
| 9 | % - 'time' : vector providing new time tags used to resample time
|
|---|
| 10 | %
|
|---|
| 11 | % Example:
|
|---|
| 12 | % vel=resultstomatrix(md,'TransientSolution','Vel');
|
|---|
| 13 | % vel=resultstomatrix(md,'TransientSolution','Vel','time',2008:1/12:2014);
|
|---|
| 14 | %
|
|---|
| 15 | % See also MODEL resample
|
|---|
| 16 |
|
|---|
| 17 |
|
|---|
| 18 | options=pairoptions(varargin{:});
|
|---|
| 19 |
|
|---|
| 20 | results=md.results.(resultname);
|
|---|
| 21 |
|
|---|
| 22 | %first, figure out the size:
|
|---|
| 23 | count=0;
|
|---|
| 24 | nods=0;
|
|---|
| 25 | for i=1:length(results),
|
|---|
| 26 | if ~isempty(results(i).(field)),
|
|---|
| 27 | count=count+1;
|
|---|
| 28 | nods=size(results(i).(field),1);
|
|---|
| 29 | end
|
|---|
| 30 | end
|
|---|
| 31 |
|
|---|
| 32 | if ~count,
|
|---|
| 33 | error(['could not find any result ' field ' in ' resultname]);
|
|---|
| 34 | end
|
|---|
| 35 |
|
|---|
| 36 | %initialize:
|
|---|
| 37 | matrix=zeros(nods+1,count);
|
|---|
| 38 |
|
|---|
| 39 | %fill it up:
|
|---|
| 40 | count=0;
|
|---|
| 41 | for i=1:length(results),
|
|---|
| 42 | if ~isempty(results(i).(field)),
|
|---|
| 43 | count=count+1;
|
|---|
| 44 | matrix(1:end-1,count)=results(i).(field);
|
|---|
| 45 | matrix(end,count)=results(i).time/md.constants.yts;
|
|---|
| 46 | end
|
|---|
| 47 | end
|
|---|
| 48 |
|
|---|
| 49 | newtime=getfieldvalue(options,'time',[]);
|
|---|
| 50 | newmatrix=zeros(nods+1,length(newtime));
|
|---|
| 51 | if ~isempty(newtime),
|
|---|
| 52 | %we are asked to reinterpolate to this new time:
|
|---|
| 53 |
|
|---|
| 54 | for i=1:nods,
|
|---|
| 55 | warning off;
|
|---|
| 56 | ts=timeseries(matrix(i,:), matrix(end,:));
|
|---|
| 57 | ts=resample(ts,newtime);
|
|---|
| 58 | warning on;
|
|---|
| 59 | newmatrix(i,:)=ts.Data;
|
|---|
| 60 | newmatrix(end,:)=ts.Time;
|
|---|
| 61 | end
|
|---|
| 62 |
|
|---|
| 63 | matrix=newmatrix;
|
|---|
| 64 | end
|
|---|