how to store an output in a function (or bring out the stored output into the workspace) for n-number of model run

2 次查看(过去 30 天)
I have a hydrological model which runs N number of times to calibrate the parameters.
For each model run, I have a following function where it grabs the modeled simulated output, as well as, NSE output for that run.
function [SimRR, NSE]=HYPE(x)
SimRR = dlmread('output.txt','\t','I2..I100');
NSE_num = importdata('subbasin2.txt','\t');
NSE=NSE_num.data([2]); %NSE value is located in the second spot
end
Everything runs fine. Here, I'd like to store each NSE value for N number of times. (eg. if I'm running the model 3000 times, then I would be having 3000 NSE values stored in an array).
I tried using 'assignin' to bring the value to the base and it only stores NSE value of the last run. If there is a way to store an output generated from a function, please let me know.
If you have any further questions, feel free to comment and I'll provide you with more details.

回答(1 个)

Ken Atwell
Ken Atwell 2019-10-29
Assuming NSE is a scalar double (that is, a single number), When you call HYPE, you can append the NSE result to an (intially empty) vector:
NSE=[];
for i=1:3000
% ...
[SimRR, NSE(end+1)]=HYPE(x);
end
% NSE should be length 3000
  2 个评论
Jung
Jung 2019-10-29
Is there a way to store the values within a function (maybe a table ) and call it out later?
The structure of this hydro model script that I'm using is a little different that what I'm used to so I try not to touch the initial interface as much as possible.
Ken Atwell
Ken Atwell 2019-10-29
You can using a persistent variable who's value will "survive" across calls to the function. That said, preserving state inside a function is considered bad form -- very nearly a global variable -- that is best avoided if you can.

请先登录,再进行评论。

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by