Matlab:从ODE45导出variables

我有一个使用许多函数的ODE。 我希望导出这些“帮手”function,以便我可以将它们与ODE的自variables进行比较。

function dFfuncvecdW = ODE(W,Ffuncvec); X = Ffuncvec(1); y = Ffuncvec(2); #lots of code R = ... #R is a function of X,W and y. #and a few other functions that are a function of X,W and y. dXdW = ... #some formula dydW = ... #some formula dFfuncvecdW = [dXdW; dydW]; end 

我用这个函数调用这个函数

 Wspan = [0 8000.] X0 = [0; 1.] [W,X] = ode45(@ODE, Wspan, X0); 

我可以很容易地输出X或W到一个Excel文件:

 xlswrite(filename,X,'Conversion','A1'); 

但我需要的是将“R”和许多其他函数的值保存到Excel文件。

我怎么做?
对于Matlab我还是很新的。 我通常使用Polymath,但是对于这个ODE系统,Polymath无法在合理的时间内计算出答案。

编辑1:我使用的代码是由Polymath生成的。 我使用了我的问题的一个基本版本,以便Polymath可以超越程序,因为一旦Polymath代码成功运行,它只会提供Matlab代码。 输出后,input完整的方程组。

最简单也可能是最快的方法是 ode45返回WX 之后重新评估你的函数。 如果这些function是vector化的,那将很容易。 否则,只需使用从1length(W)迭代的简单for循环。

或者,您可以使用输出函数将每次迭代中的值保存到文件或global或最有效的子函数(又名嵌套函数 )variables,该variables与外部函数共享作用域(请参见例)。 有关如何使用输出函数的示例,请参阅我的答案 。

我find了一个相当快速和无痛的解决scheme来回答我的问题。 我只是在ode函数中附加了一个带有代码的文本文件。

编辑:我无法发表评论,因为我在SE的这个分支上有足够的代表。 我的解决scheme是添加下面的代码:

 fid = fopen('abc1.txt', 'at'); fprintf(fid, '%f\n', T); fclose(fid); 

正上方

 dYfuncvecdW = [dFAdW; dFBdW; dFCdW; dFDdW; dydW]; 

在ode函数的末尾。 这被certificate是一个临时解决scheme。 我已经打开了关于我收到的输出的另一个问题。