就是一组数据,先用histogram算出频率分布,用多项式拟合,polyfit算出多项式的参数值,然后对多项式进行积分后,之后再带入数据求值。下面是我的代码,是用syms定义后,先进行积分,之后再带入数据算;但是这种方法,多项式n的阶数一多,到30多阶级,慢慢编写就会很麻烦,而且会频繁变更阶数,有没有什么办法能快速对算出来的多项式进行积分,再求值。
或者有什么办法把我的syms下面的int简化下(for循环能用在syms里面吗),而不是这种一个一个把函数写出来,
clc
clear;
X=xlsread('Berthold.xlsx')
X=X(:,1);
H=histogram(X,'Normalization','probability');
n=2;%多项式阶数
x = (H.BinEdges(1:end-1)+H.BinEdges(2:end))/2;
y = H.Values;
p = polyfit(x,y,n);
f1 = polyval(p,x);%直接求的值
syms z
f2=int(p(:,1)*z.^2+p(:,2)*z+p(:,3))
subs(f2,z,x)%对多项式积分后的值