改变经验模型的输入参数

时间:2012-09-19 17:27:01

标签: matlab model

我正在运行一个预测某个地点水温的模型,该模型需要一些气象条件的初始输入。用户必须更改的输入存储在扩展名为.NML的文件中。我想访问这个文件(来自matlab)并使用一系列特定变量的值运行模型。例如,有一个名为“input_slope”的变量,用户必须指定该变量。我想为此变量运行具有许多不同值的模型,例如从1:100然后运行模型(应用程序文件)并将模型输出与我的观察值进行比较。

我对此非常陌生,想知道如何开始在matlab中更改输入文件,然后使用这些新值执行模型?

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

如果您想在Matlab中更改输入文件,我建议使用C类文件IO函数,如fopenfgetl和朋友。这是我从online docs修改的片段,我经常使用它作为模式:

fid = fopen('fgetl.m');

file_data = {};
tline = fgetl(fid);
while ischar(tline)
    file_data{end+1} = tline;
    tline = fgetl(fid);
end

fclose(fid);

有些人会抱怨没有初始化单元格数组的大小file_data,但是现在让我们起床并运行。单元格数组将包含文件中每行的字符串,并删除换行符。您可以像这样访问字符串:

str = file_data{1};

然后str是包含数据的字符数组。您可以使用textscanstr值获取数字,字符串等。

如果您需要写出数据,可以尝试以下方法:

fid = fopen('myOutputFile.txt','w');
% data is in data and is an array of floating point numbers
for ii=1:length(data)
   fprintf(fid,'%f\n',data(ii));
end
fclose(fid);

看起来这是一个外部可执行程序,因此我建议使用system命令执行并从程序中获取返回值。我不确定你对这一切有多新,所以请告诉我这是否有用。