如何在matlab中集成该函数

如何在matlab中集成该函数,matlab,integration,Matlab,Integration,我对matlab是新手 如何集成这行代码 p2= polyfit(x,y,length(x)); from= x(1); to= x(length(x)); 我需要集成p2 我尝试了很多集成功能: value = integral(p2,from,to); 但是我有 使用整数时出错(第82行)第一个输入参数必须是函数 处理 这是因为在您的代码中,p2,不是一个函数。它只是一个系数向量。integral的第一个参数需要处理要集成的函数 从代码判断,似乎需要定义一个函数来计算多项式p2。如果是

我对matlab是新手

如何集成这行代码

p2= polyfit(x,y,length(x));
from= x(1);
to= x(length(x));
我需要集成
p2

我尝试了很多集成功能:

 value = integral(p2,from,to);
但是我有

使用整数时出错(第82行)第一个输入参数必须是函数 处理


这是因为在您的代码中,
p2
,不是一个函数。它只是一个系数向量。
integral
的第一个参数需要处理要集成的函数

从代码判断,似乎需要定义一个函数来计算多项式
p2
。如果是这样,您可以执行以下示例:

% take an example set of x and y 
x = linspace(0, pi, 1000); % uniform samples between 0 to pi
y = sin(x); % assume, for sake of example, output is sine function of input

% polynomial fit
p2 = polyfit(x,y,4); % 4th order polynomial
% Note that, in general, the order should be much smaller than length(x).
% So you probably should review this part of your code as well.

% define a function to evaluate the polynomial
fn = @(x) polyval(p2, x);
% this means: fn(x0) is same as polyval(p2, x0)

% compute integral
value = integral(fn,x(1),x(end));
您可以使用该函数获得多项式的精确积分的多项式系数:

p2  = polyfit(x,y,length(x));
int = diff(polyval(polyint(p2),x([1 end])));

将函数
y
传入,而不是
y的系数
非常感谢,您还说了一件事-顺序应该比长度(x)小得多。实际上,正如我们的指导老师所写的那样:将数据拟合成n次多项式,其中n是x的元素数,他是指其他意思还是他可能错了?@程序员:假设
n=length(x)
,一个n-1次多项式就足以在
fn(x)
y
之间得到精确的拟合,无论您选择什么
y
。因此,在我看来,没有很好的理由去拟合次数
n
或更高的多项式(实验除外)。
p2  = polyfit(x,y,length(x));
int = diff(polyval(polyint(p2),x([1 end])));