曲线拟合

使用Matlab自带的polyfit函数,可以很方便地根据现有样本数据进行多项式曲线拟合,为了有直观感受,先上例程,如下所示:

 x = -:0.1:;                           % 样本数据x坐标
y = *x.^ + *x + + randn(size(x)); % 样本数据y坐标,添加随机噪声 p = polyfit(x, y, ); % 使用自带函数进行数据拟合,拟合的多项式维数n=
yy = polyval(p, x); % 生成拟合数据 figure, plot(x, y, '.'); % 显示原始数据
xlabel('x'), ylabel('y'); % 坐标轴
hold on, plot(x, yy, 'r', 'LineWidth', ); % 显示拟合数据
legend('raw data', 'fitting line'); % 图例

运行结果:

函数说明:
p = polyfit(x,y,n) returns the coefficients for a polynomial p(x) of degree n that is a best fit (in a least-squares sense) for the data in y. The coefficients in p are in descending powers, and the length of p is n+1

即,polyfit(x,y,n) 返回对应于样本数据y的n维多项式p(x)的系数(基于最小二乘法)。该系数按照降幂顺序排列,个数为 n+1


直线拟合

基本原理:给定一组数据[x1,x2,…,xn]和[y1,y2,…yn],已知x和y成基本线性关系,即存在一条最佳拟合直线 y = kx + b,对此,同样可以基于最小二乘法来求出系数k和b。此时,调用polyfit(x,y,n)时,应取n=1,即把直线拟合看作是一阶多项式的拟合,在此不再赘述。

另外,还可以使用基于矩阵除法的直线拟合方法,基本原理如下:

例程:

 % 基于矩阵除法的直线拟合
x = [0.5 1.5 2.5 ];
y = [1.75 2.45 3.81 4.8 8.6]; n = length(x);
x = reshape(x,n,); % 生成列向量
y = reshape(y,n,);
A = [x,ones(n,)]; % 连接矩接A yy = A \ y; % 左除,相当于inv(A)*y k = yy(); % 得到k
b = yy(); % 得到b yy = polyval([k, b], x); % 生成拟合数据
figure,
plot(x, y, '*');
hold on, plot(x, yy, 'r'); % 显示拟合曲线

运行结果:

reference

 

Matlab学以致用 - 曲线拟合的更多相关文章

  1. Matlab的曲线拟合工具箱CFtool使用简介

    http://phylab.fudan.edu.cn/doku.php?id=howtos:matlab:mt1-5 一. 单一变量的曲线逼近Matlab有一个功能强大的曲线拟合工具箱 cftool ...

  2. Matlab学以致用--模拟os任务装载情况

    2012-06-08 21:26:42 用matlab来建模,仿真不同时刻os task在队列中的装载情况.输入参数如下 作为初学者,M文件写的有点长.能实现功能就算学以致用了. clear;clc ...

  3. 利用MATLAB进行曲线拟合

    软件环境:MATLAB2013a 一.多项式拟合 多项式拟合是利用多项式最佳地拟合观测数据,使得在观测数据点处的误差平方和最小. 在MATLAB中,利用函数ployfit和ployval进行多项式拟合 ...

  4. matlab做曲线拟合

    python 做曲线拟合 https://blog.csdn.net/qq_16583687/article/details/72723708 matlab做拟合函数,可以在命令行输入:数据x,数据y ...

  5. [matlab工具箱] 曲线拟合Curve Fitting

    ——转载网络 我的matlab版本是 2016a 首先,工具箱如何打开呢? 在 apps 这个菜单项中,可以找到很多很多的应用,点击就可以打开具体的工具窗口 本文介绍的工具有以下这些: curve F ...

  6. MATLAB利用散点进行函数曲线拟合

    原文:MATLAB利用散点进行函数曲线拟合 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/laobai1015/article/details/77 ...

  7. 基于MATLAB的多项式数据拟合方法研究-毕业论文

    摘要:本论文先介绍了多项式数据拟合的相关背景,以及对整个课题做了一个完整的认识.接下来对拟合模型,多项式数学原理进行了详细的讲解,通过对文献的阅读以及自己的知识积累对原理有了一个系统的认识.介绍多项式 ...

  8. Matlab之数据处理

    写在前面的,软件不太强大,每次保存都需要生成rec和dark的文件,在处理是只需要一个就行了,所有网上查看了下运用批处理的命令去掉多余的文件: 解决办法:windows命令模式下CMD进入文件的目录, ...

  9. Matlab: 白噪声与曲线拟合

    在信号处理中常常需要用到曲线拟合,这里介绍一下利用最小二乘拟合一般曲线的方法,并对滤掉信号中白噪声的方法作些介绍. 为了测试拟合算法的好坏,先模拟出一个信号作为检验算法的例子: 用白噪声产生模拟信号: ...

随机推荐

  1. 【RAC】使用一条“ps”命令获取Linux环境下全部RAC集群进程信息

    如何仅使用一条ps命令便能获取到所有与RAC集群进程相关的信息.  从所使用的命令角度上看很简单,仅需使用ps命令结合grep命令便能实现.问题关键是需要确定检索哪些关键字. 1.与RAC集群有关的进 ...

  2. position:relative与position:absolute 区别

    relative:相对于它本身原来的位置进行偏移(配合 right left bottom top属性进行偏移) 他偏移会空出来一些空白 其余的html元素不会填充这些空白 absolute:相对于同 ...

  3. Anglarjs 工具方法

    Angularjs 常用方法 1. isArray使用 效果图如下,结果为true 2.uppercase使用 $scope.name = "zhangsan"; $scope.n ...

  4. golang fmt用法举例

    下标与参数的对应 例子如下: package main import ( "fmt" ) func main() { num := 10 fmt.Printf("num: ...

  5. BASIC-28_蓝桥杯_Huffuman树

    题目: 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下 ...

  6. 9-16Jenkins-1第一个任务

    jenkins安装搭建 #mac安装jenkins brew install jenkins #或下载war包 java -jar jenkins.war 第一个jenkins任务 创建一个自由风格的 ...

  7. shell 10流程控制

    if 判断 if #shell #!/bin/sh a=5 if [[ $a > 3 ]];then echo "$a>3" fi #写成一行 if [[ $a < ...

  8. [UE4]计算机中的数据表示

    一.位:数据的最小单位,一个位仅有两种状态 一个电路,通或断:磁盘上的小磁铁,南极或北极: 使用Bit表示位,百兆带宽,一秒钟可以传输一百兆个bit 二.字节:8个位组成一个字节,一个字节有256种状 ...

  9. Android RIL Architecture

    Android RIL Architecture   by Gomathi Sankar   Introduction   The Article explains about the buildin ...

  10. MapReduce C++ Library

    MapReduce C++ Library for single-machine, multicore applications Distributed and scalable computing ...