matlab曲线拟合方法和函数拐点查找

您所在的位置:网站首页 拐点分析 matlab曲线拟合方法和函数拐点查找

matlab曲线拟合方法和函数拐点查找

#matlab曲线拟合方法和函数拐点查找| 来源: 网络整理| 查看: 265

拟合曲线

polyfit 曲线拟合函数

a=polyfit(X,F,7); %曲线拟合

输入:X 为所有离散点的横坐标的取值 F 为所有离散点的纵坐标的取值 7 为多项式拟合的最高次数(根据自己需要选择); 输出:a 为拟合曲线后自变量的系数

拟合出多项式后,需要配合使用 polyval 来求出对应因变量的值

Y=polyval(a,X); %根据拟合的函数得出x对应的因变量的值

输入:a 为拟合出的多项式的系数 X为所有离散点的横坐标的取值; 输出:Y 为根据多项式求解出对应自变量的因变量的值

clear,clc; I=imread('./ImageLib/DT1.png'); I=im2double(I); %归一化 [h,w,L]=size(I); %计算图像的大小 I1=0.299*I(:,:,1)+0.587*I(:,:,2)+0.114*I(:,:,3); %计算灰度图,用加权平均法 %计算每行的灰度平均值,针对整个图像而言 X=1:1:h; F_all=sum((I1'))/w; plot(X,F_all,'o'); %画出平均值曲线图 hold on; [a,~,mu]=polyfit(X,F_all,13); %曲线拟合 自变量的系数 Y=polyval(a,X,[],mu); %根据拟合的函数得出x对应的因变量的值 plot(X,Y,'g');

效果图:在这里插入图片描述

查找函数拐点

首先,得明确拐点是啥,数学中定义的拐点是函数凹凸性改变的点; 数学求解原理: (1)求函数 f(x) 的二阶导 (2)二阶导存在且导数为0同时三阶导不为0的点为函数拐点;二阶导不存在的点,其左右边二阶导异号的点也为拐点;

matlab 方法: diff 差分和近似导数

de2=diff(Y,2); %拟合曲线的二阶导

输入:Y 待求导函数(matlab中就是一数组,因变量数组) 2 求导阶数(根据需要填写) 输出: de2 对应个点的导数值 ps:diff只是近似求导,实际是求的各点的差分值 如: 一阶导: de1(1)=Y(2)-Y(1) de1(2)=Y(3)-Y(2) … de1(i)=Y(i+1)-Y(i) … de1(n-1)=Y(n)-Y(n-1) 二阶导: de2(1)=de1(2)-de1(1) de2(2)=de1(3)-de1(2) … de2(i)=de1(i+1)-de1(i) … de2(n-1)=de1(n)-de1(n-1)

%%Y是上例中拟合的曲线,看客自己操作时切记要两段代码合在一起跑 de2=diff(Y,2); %拟合曲线的二阶导 de3=diff(Y,3); %拟合曲线的三阶导 rowX=linspace(0,0,h); for row1=h-3:-1:2 if (de2(row1)==0 && de3(row1)~=0)|| (de2(row1)*de2(row1+1)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3