matlab指数函数
p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)
说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。
多项式曲线求值函数:polyval( )
调用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。
[y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。
clear;clc;close all;format short gc = 2;%拟合阶次cs_result = zeros(6,2);the=xlsread(‘datta.xlsx’,’Sheet1′,’C1:H2′);the1=xlsread(‘datta.xlsx’,’Sheet1′,’C5:J6′);the2=xlsread(‘datta.xlsx’,’Sheet1′,’C9:H10′);pt1 = textread(‘1080x.txt’);%pt2 = textread(‘480x.txt’);%pt3 = textread(‘240x.txt’);%
pt4 = textread(‘1080y.txt’);%pt5 = textread(‘480y.txt’);%pt6 = textread(‘240y.txt’);%
figure(1)subplot(131)% plot(pt1(1,:),pt1(2,:),’-or’);x = pt1(1,:);y = pt1(2,:);x1=the(1,:);y1=the(2,:);p1=polyfit(x,y,c); % 拟合出的二次函数的系数xx=linspace(min(x),max(x)); % 绘图用到的点的横坐标yy=polyval(p1,xx); % 拟合曲线的纵坐标plot(x,y,’-or’,x1,y1,’-ob’,xx,yy); % 绘图,原始数据+拟合曲线hold on;grid on;
b0 = [y(1),-1];%设置初始值;Xi=linspace(min(x),max(x)); % 绘图用到的点的横坐标b = lsqcurvefit(@fun1,b0,x,y); b(2) = -0.4;Yi=y(1)*exp(b(2)*Xi);bresult(1,:) = [y(1),b(2)];plot(Xi,Yi,’-g’); % 绘图,原始数据+拟合曲线ztitle(‘图1.1080x’);legend(‘样本数据1′,’样本数据2′,’多项式函数’,’指数函数’)
subplot(132)% plot(pt2(1,:),pt2(2,:),’-or’);x = pt2(1,:);y = pt2(2,:);x1=the1(1,:);y1=the1(2,:);p2=polyfit(x,y,c); % 拟合出的二次函数的系数xx=linspace(min(x),max(x)); % 绘图用到的点的横坐标yy=polyval(p2,xx); % 拟合曲线的纵坐标plot(x,y,’-or’,x1,y1,’-ob’,xx,yy); % 绘图,原始数据+拟合曲线hold on;grid on;
b0 = [y(1),-1];%设置初始值;Xi=linspace(min(x),max(x)); % 绘图用到的点的横坐标b = lsqcurvefit(@fun1,b0,x,y);Yi=y(1)*exp(b(2)*Xi);bresult(2,:) = [y(1),b(2)];plot(Xi,Yi,’-g’); % 绘图,原始数据+拟合曲线ztitle(‘图2.480x’);legend(‘样本数据1′,’样本数据2′,’多项式函数’,’指数函数’)
subplot(133)% plot(pt5(1,:),pt5(2,:),’-or’);x = pt5(1,:);y = pt5(2,:);x1=the2(1,:);y1=the2(2,:);p5=polyfit(x,y,c); % 拟合出的二次函数的系数xx=linspace(min(x),max(x)); % 绘图用到的点的横坐标yy=polyval(p5,xx); % 拟合曲线的纵坐标plot(x,y,’-or’,x1,y1,’-ob’,xx,yy); % 绘图,原始数据+拟合曲线hold on;grid on;
b0 = [y(1),-1];%设置初始值;Xi=linspace(min(x),max(x)); % 绘图用到的点的横坐标b = lsqcurvefit(@fun1,b0,x,y);Yi=y(1)*exp(b(2)*Xi);bresult(5,:) = [y(1),b(2)];plot(Xi,Yi,’-g’); % 绘图,原始数据+拟合曲线ztitle(‘图3.480y’);legend(‘样本数据1′,’样本数据2′,’多项式函数’,’指数函数’)
%%测试程序% % x=[0 1 2 4 5 6 10];% % y=[7.18056856 3.392944443 2.38662024 1.387095524 1.264704742 0.904331886 0];% x = pt3(1,:);% y = pt3(2,:);% x0=[y(1),-10];%设置初始值% Xi=linspace(min(x),max(x)); % 绘图用到的点的横坐标% b = lsqcurvefit(@fun1,x0,x,y);% Yi=y(1)*exp(b(2)*Xi);% bresult(6,:) = [y(1),b(2)];% figure% % % plot(x,y,’cp’,’MarkerEdgeColor’,’k’,’MarkerFaceColor’,’g’,’MarkerSize’,6)% % hold on% % plot(Xi,Yi,’linewidth’,2,’markersize’,16)% % plot(x,y,’-or’,Xi,Yi); % 绘图,原始数据+拟合曲线% hold on;grid on;%