我正在寻找与matlab的数值积分。我知道matlab中有一个trapz函数,但精度不够高。通过在线搜索,我发现有一个四元函数,它似乎只接受符号表达式作为输入。我的数据都是离散的和一维的。这是在我的数据上使用quad的方法吗?谢谢。
发布于 2012-03-27 08:35:22
你的问题的答案是否定的。在Matlab语言中,对没有表达式的数据进行数值积分的唯一方法是使用trapz函数。如果它对你来说不够精确,试着像Li-aung所说的那样编写你自己的四元函数,这很简单,this可能会有所帮助。
你可以尝试的另一种方法是使用功能强大的曲线拟合工具cftool进行拟合,然后使用可以对cfit对象进行操作的integrate函数(它有一个奇怪的约定,上限是第一个参数!)。我认为你不会得到比trapz更准确的答案,这取决于适合度。
发布于 2013-02-28 01:12:21
使用MATLAB中的样条函数对数据进行插值,然后对该数据进行积分。这是以离散形式集成数据的标准方法。
发布于 2014-11-27 20:02:04
如果您首先创建一个插值数据的函数,则可以使用quadl()集成数据。
function f = int_fun(x,xdata,ydata)
f = interp1(xdata,ydata,x);然后将其提供给quadl()函数:
integral = quadl(@int_fun,A,B,[],[],x,y) % syntax to pass extra arguments
% to the functionhttps://stackoverflow.com/questions/9881430
复制相似问题