如何找到polyfit(t,y,2)给出的函数的最小值和最大值点

时间:2018-04-18 14:11:05

标签: matlab

这里我写了MatLab代码,通过它我可以找到函数p,之后我想找到最小值和最大值点,请告诉我我该怎么做?

path3='D:\SelectedCycle2\001\nm-01\';
list3 = dir(path3);
fName3 = {list3.name};
[~,y3]=size(fName3);

sumvec=double([]);
t=[];
for fff_no=3:y3
    image=double(imread(char(strcat(path3,fName3(fff_no)))));
    sumvec=[sumvec,sum(image(:))];
    t=[t,fff_no-2];
end
y=sumvec;
p = polyfit(t,y,2);
g=diff(p);

请填写此matlab代码。

1 个答案:

答案 0 :(得分:2)

我看到你试过diff,但是这是一个数值微分的函数(即只是得到相邻值之间的差异),而你可能想要多项式的导数。幸运的是,MATLAB非常完整:

pd=polydiff(p);

会给你衍生系数。然后,

max_min=roots(pd);

会给出多项式p的极值。通过评估相邻位置的多项式,您可以知道它的最大值还是最小值。你可以评估它,对于特定的极值

adjacent(1)=polyval(p,max_min(1)+0.0001);

通过将它与极值中的多项式的值进行比较,您可以知道它的最大值或最小值(检查前后两者的值,以检查它是否为鞍点)。

检查所有这些功能的文档,因为有极其有用的东西(例如polyfit返回的错误估计值可以在polyval中使用),但这超出了问题。