最近在分析一些数据,就是数据拟合的一些事情,用到了matlab的polyfit函数,效果不错. 因此想了解一下这个多项式具体是如何拟合出来的,所以就搜了相关资料. 这个文档介绍的还不错,我估计任何一本数值分析教材上讲的都非常清楚. 推导就不再写了,我主要参考下面两页PPT,公式和例子讲的比较清楚. 公式: 例子: matlab代码如下: clear all; close all; clc; N=10; %设置拟合阶数 x=1:0.5:10; y=cos(x); %生成待拟合点 p=polyfit…
这里待拟合的螺线我们选择阿基米德螺线,对数螺线类似. 螺线的笛卡尔坐标系方程为:   螺线从笛卡尔坐标转为极坐标方程为:   阿基米德螺线在极坐标系下极径r和极角theta为线性关系,方程为:   计算步骤如下: 1.通常我们首先得到螺线在笛卡尔坐标下的一些点x,y. 2.然后根据x,y计算出r和theta. 3.最后拟合的目标就是计算出a和b,这一步可以用最小二乘.   拟合结果: 下图蓝色线为原始线(这里可能看不到),红色线为拟合线,红色点为测量点. 放大看一下: 不过有时候拟合也会失败(这…
多项式均表示为数组形式,数组元素为多项式降幂系数 1.      polyval函数 求多项式在某一点或某几个点的值. p = [1,1,1];%x^2+x+1 x = [-1,0,1];y = polyval(p,x); 另外求函数在某一点或某几个点的值可以用函数feval. x = [-1,0,1]; y = feval(@(x)exp(x),x);%注意用的乘法和乘法都改用.运算符 2.      roots函数 求多项式的零点. p = [1,-3,2,0];x0 = roots(p);…
x=0:0.2:4; %生成等差数列 rnd=rand(1,size(x,2))*5; %生成一组随机数 y=x.*x.*x+x.*x+6+rnd; %生成y=x^3+x^2+6函数在垂直方向5个尺度内的随机採样序列 b=polyfit(x,y,3); %计算多项式拟合參数 yy=polyval(b,x); %生成拟合后y函数的新值 hold on,plot(x,y,'o'),plot(x,yy); %hold开关打开用于画在同一张图上,前者画散点,后者话拟合曲线. [效果图]:…
clc;clear all;close all;%% 多项式拟合指令:% X = [1 2 3 4 5 6 7 8 9 ];% Y = [9 7 6 3 -1 2 5 7 20]; % P= polyfit (X,Y,3);% % x = 0:2:10;% y = polyval(P,x);% plot(x,y,X,Y,'r*');%% 指定函数拟合 x=[ 0;0.4;1.2; 2;2.8;3.6;4.4;5.2; 6;7.2; 8;9.2;10.4;11.6;12.4;13.6;14.4;1…
原文:Matlab随笔之插值与拟合(下) 1.二维插值之插值节点为网格节点 已知m x n个节点:(xi,yj,zij)(i=1…m,j=1…n),且xi,yi递增.求(x,y)处的插值z. Matlab可以直接调用interp2(x0,y0,z0,x,y,`method`) 其中 x0,y0 分别为 m 维和 n 维向量,表示节点, z0 为 n × m 维矩阵,表示节点值, x,y 为一维数组,表示插值点, x 与 y 应是方向不同的向量,即一个是行向量,另一个是列 向量, z 为矩阵,它的…
原文:Matlab随笔之插值与拟合(上) 1.拉格朗日插值 新建如下函数: function y=lagrange(x0,y0,x) %拉格朗日插值函数 %n 个节点数据以数组 x0, y0 输入(注意 Matlat 的数组下标从1开始), %m 个插值点以数组 x 输入,输出数组 y 为 m 个插值 n=length(x0);m=length(x); :m z=x(i); s=0.0; :n p=1.0; :n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end…
05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算.并求x=0处的曲线斜率和13<=x<=15范围内y的最小值. x0=[0 3 5 7 9 11 12 13 14 15]; y0=[0 1.2 1.7 2 2.1 2.0 1.8 1.2 1.0 1.6]; x=0:0.1:15; % interp1现有插值函数,要求x0单调,'method'有 % nearest 最近项插值 linear 线性插值 % spline 立方样条插值 cubic 立方插值…
matlab练习程序(SUSAN检测) SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny.不过思想还是有点意思的. 主要思想就是:首先做一个和原图像等大的目标图像.然后用一个圆形的模板,用模板去遍历原图像每个像素,把模板内的每个像素都和模板中心像素比较,如果灰度小于一个阈值,那么就对目标图像当前和原图像相同位置的像素加一,直到结束.目标图像中在原图像是角点的位置就会取局部极小,所以做一个反向的相减.img=max(img)-img,if img…
背景 由项目中需要根据一些已有数据学习出一个y=ax+b的一元二项式,给定了x,y的一些样本数据,通过梯度下降或最小二乘法做多项式拟合得到a.b,解决该问题时,首先想到的是通过spark mllib去学习,可是结果并不理想:少量的文档,参数也很难调整.于是转变了解决问题的方式:采用了最小二乘法做多项式拟合. 最小二乘法多项式拟合描述下: (以下参考:https://blog.csdn.net/funnyrand/article/details/46742561) 假设给定的数据点和其对应的函数值…