精华内容
下载资源
问答
  • Matlab数据拟合

    千次阅读 2020-07-23 18:14:03
    文章目录引入1 多项式拟合2 指定函数拟合 引入   适用到的数据清单如下:   1)拟合数据:... data = importdata('linear_regression.txt'); %% x = data( : , 1);

    引入

      使用的数据清单如下:
      1)拟合数据:https://github.com/InkiInki/data/blob/master/test/linear_regression.txt

    1 多项式拟合

      代码示例:

    function [] = test()
        
        %%载入数据
        data = importdata('linear_regression.txt');
        
        %%
        x = data( : , 1);
        y = data( : , 2);
        f = polyfit(x, y, 10); %多项式拟合, 10为设置的多项式系数
        xi = min(x) : 0.02 : max(x);
        yi = polyval(f, xi); %计算多项式的值
        plot(xi, yi, x, y, 'r*');
    end
    

      拟合结果:
    在这里插入图片描述
      图形窗口的拟合可以参照

    2 指定函数拟合

      假设已经知道待拟合数据的函数形式,例如y=ax+sin(x)ebx+cy = ax + sin(x) * e^{bx} + c,则示例代码如下:

    function [] = test()
        
        %%载入数据
        data = importdata('linear_regression.txt');
        x = data( : , 1);
        y = data( : , 2);
        
        %%
        %已知函数,示例顺序为:函数, 'independent', 自变量名,'coefficients'{变量名};
        f = fittype('a * x + sin(x) * exp(b * x) + c', 'independent', 'x', 'coefficients', {'a', 'b', 'c'}); 
        cfun = fit(x, y, f, 'StartPoint', [0, 0, 0]) % 展示拟合函数;
        xi = min(x) : 0.02 : max(x);
        yi = cfun(xi); %计算多项式的值
        plot(xi, yi, 'b-', x, y, 'r*');
    end
    

      拟合结果:
    在这里插入图片描述

         General model:
         cfun(x) = a * x + sin(x) * exp(b * x) + c
         Coefficients (with 95% confidence bounds):
           a =       0.516  (0.2902, 0.7418)
           b =      0.3105  (0.1212, 0.4998)
           c =       3.026  (2.977, 3.074)
    

    3 曲线拟合工具箱

      1)导入需要使用到的数据,例如:

    >> data = importdata('linear_regression.txt');
    >> x = data( : , 1);
    >> y = data( : , 2);
    

      2)命令窗口输入cftool,出现以下界面:
    在这里插入图片描述
      3)进行相应选取即可:
    在这里插入图片描述

    4 拟合示例

    4.1 线性拟合之人口预测模型

      1)下表给出某地区1971-2000年的人口数据:
    在这里插入图片描述
      2)在matlab中的表示如下:

    	t = 1 : 30;
        y = [33815, 33981, 34004, 34165, 34212, 34327, 34344, 34458, 34498, 34476, 34483, 34488, 34513, 34497, 34511, 34520, 34507, 34509, 34521, 34513, 34515, 34517, 34519, 34519, 34521, 34521, 34523, 34525, 34525, 34527];
    

      3)绘制如下:

    在这里插入图片描述
      4)使用logistic模型,其基本形式如下:

    y=1a+bet y = \frac{1}{a + b e^{-t}}

      5)令y=1yy' = \frac{1}{y}x=etx' = e^{-t},将其转化为直线模型:

    y=a+bx y' = a + bx'

      6)代码如下:

    function [] = test()
        
        %% 载入数据
        T = 1 : 30;
        Y = [33815, 33981, 34004, 34165, 34212, 34327, 34344, 34458, 34498, 34476, 34483, 34488, 34513, 34497, 34511, 34520, 34507, 34509, 34521, 34513, 34515, 34517, 34519, 34519, 34521, 34521, 34523, 34525, 34525, 34527];
        len = size(T, 2);
        
        %% 线性化处理
        for t = 1 : len
            x(t) = exp(-t);
            y(t) = 1 / Y(t);
        end
        
        %% 计算回归系数B
        c = ones(len, 1);
        X = [c, x'];
        B = inv(X' * X) * X' * y'
        
        %% 
        temp = sum(y) / len;
        for i = 1 : len
            z(i) = B(1, 1) + B(2, 1) * x(i); % 计算回归拟合值
            s(i) = y(i) - temp; % 计算离差
            w(i) = z(i) - y(i); % 计算误差
        end
        
        %%
        S = s * s'; % 计算离差平方和S
        Q = w * w'; % 计算误差平方和Q
        U = S - Q; % 计算回归平方和U
        F = (len - 2) * U / Q % 计算并输出F检验值
        for i = 1 : len
           Y(i) = 1 / (B(1, 1) + B(2, 1) * exp(-i));
        end
        
        plot(T, Y);
    end
    

      7)输入如下:

    在这里插入图片描述

    B =
    
       1.0e-04 *
    
        0.2902
        0.0182
    
    F =
    
       47.8774
    

    4.2 非线性拟合之薄膜渗透率的测定

      1)以下给出浓度表 (题目略):

    tj/st_j / s 100 200 300 400 500 600 700 800 900 1000
    Cj/(mgcm3)C_j / (mg \cdot cm^{-3}) 4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59

      2)以下给出极小化函数:

    E(K,aA,aB)=j=110[a+be0.02KtjCj]2 E (K, a_{A}, a_B) = \sum_{j = 1}^{10} [a + b e^{-0.02 K t_j} - C_j]^2

      3)代码示例如下:

    function [] = test()
        f = @(x, t)x(1) + x(2) * exp(-0.02 * x(3) * t);
        t = linspace(100, 1000, 10);
        c = 1e-5 * [454, 499, 535, 565, 590, 610, 626, 639, 650, 659];
        x0 = [0, 0, 0]; % 初始值
        x = lsqcurvefit(f, x0, t, c) % lsqcurvefit为非线性拟合函数
        f = f(x, t)
        plot(t, c, 'r*', t, f, '-')
    end
    

      4)输出如下:
    在这里插入图片描述

    x =
    
        0.0017    0.0029   -0.0308
    
    f =
    
        0.0047    0.0049    0.0051    0.0053    0.0056    0.0058    0.0061    0.0064    0.0067    0.0070
    

    参考文献:
    [1]:MATLAB在数学建模中的应用,卓金武等。

    展开全文
  • matlab编写erf函数

    2021-03-21 15:29:10
    matlab编写erf函数 erf函数 误差函数erf(x)函数,其定义为: 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的...

    matlab编写erf函数

    erf函数

    误差函数erf(x)函数,其定义为:
    在这里插入图片描述
    在统计学上应用广泛,用matlab编程如下:

    function f=Myerf(x)
    f=2/sqrt(pi)*quad('exp(-x.^2)',0,x);
    end
    

    其中matlab也有内置erf()函数,我们可以比较自己编写的与内置函数之间的误差

    a=[];b=[];
    for i=0.1:0.1:1.0
        a=[a,Myerf(i)];
        b=[b,erf(i)];
        error=b-a;
    end
    
    

    统计十个值的误差,结果如下:
    在这里插入图片描述

    可见,误差极小

    展开全文
  • MATLAB初阶绘图详解

    2021-02-07 11:10:44
    如何使用MATLAB画出如下这张图呢?接下来让我献丑讲解一下叭! 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): ...


    前言

    Exercise:
      ·Plot f as a black line and g as a series of red circles for the range t = 1 to 2 in one figure f = t^2 and g = sin(2Πt);
      ·Label each axis, and add title and legend;

    如何使用MATLAB绘制如下这张图呢?接下来让我献丑讲解一下叭!
    在这里插入图片描述

    一、绘制函数图像

       首先我们要了解,如何在同一个坐标轴上同时显示两个以上的函数,那我们就需要用到MATLAB的 hold on 和 hold off 指令,当我们在Command Window 下达hold on 指令时,我们就能在同一个坐标轴上绘制多个函数图像了。
       接下来就是绘制函数图像的过程了,话不多说,上代码;

    t = linspace(1, 2);				#设定t的范围为[1, 2]
    f = t .^ 2;
    g = sin(2 * pi .* t);
    plot(t, f, '-k', t, g, 'or');	#绘制函数图像,下面会详细解释引号的内容
    

       引号中的内容可以通过查表得知:
    在这里插入图片描述
       其实用方法为 plot (x, y, ‘str’) ,通过不同的string,来实现函数图像的不同样式。其中 ‘Data markers’ 是指函数曲线是由什么组成的,是由 o 或是 x 组成的,‘ Line types ’ 是指连接函数各点的线是什么类型的, ‘ Color ’ 顾名思义,就是指代函数曲线的颜色。
       plot (x, y, ‘o-b’); 即绘制 x 关于 y 的由 o 组成,‘ - ’ 连接的蓝色函数图像。

    二、添加图例

    话不多说,上代码:

    xlabel('Time(ms)');				#设立X轴的图例
    ylabel('f(t)');					#设立y轴的图例
    title('Mini Assignment#1');		#设立坐标轴的标题
    legend('t^2', 'sin(2\pit)');	#绘制对应曲线的函数关系式
    

    xlabel(‘string’); 即为 x 轴添加文字解释
    ylabel(‘string’); 即为 y 轴添加文字解释
    title(‘string’); 即为图像添加标题
    legend(‘string’ , ‘string’); 即为对应函数添加函数解析式

    Tips :
      我们还可以通过 set (gca, ‘XLim’, [a, b]);的方式限定X轴的范围
    当然也可以通过set (gca, ‘YLim’, [a, b]);的方式,确定y轴的范围是从a到b;
      可以通过set (gca, ‘FontSize’, k); 的方式修改图像的字体大小。

    总结

      关于MATLAB初高阶绘图的更多技巧我将持续更新,谢谢大家。

    展开全文
  • MATLAB中griddata和griddatan插值函数简单说明 前言 本文会用容易理解的话解释下griddata和griddatan的用法,不会追求严谨,目的是抛砖引玉,帮助需要用到这两个插值函数的同学尽快理解使用。 一、griddata函数是...

    MATLAB中griddata和griddatan插值函数简单说明

    前言

    本文会用容易理解的话解释下griddata和griddatan的用法,不会追求严谨,目的是帮助需要用到这两个插值函数的尽快理解使用。

    一、griddata函数是什么?

    griddata可以插入二维或三维散点数据
    严格上来说,griddata并不能算是插值,但是可以实现插值的功能。griddata有以下三种形式:
    vq = griddata(x,y,v,xq,yq)
    vq = griddata(x,y,z,v,xq,yq,zq)
    vq = griddata(___,method)
    griddata和interp2的区别是,interp2的插值数据必须是矩形域,要求xy规则排列。griddata中x,y,v是包含分散(非均匀)样本点和数据的向量。
    举个例子,现在我在野外有5x5矩阵共25个采样点,分别覆盖了经度121-125度,纬度30-34.5度之间,采样点采集的是农作物的亩产量数据。现在我有一个经度122-124度,纬度32-34度之间的20x20的矩阵,矩阵代表每个点有多少亩这种农作物,现在需要求矩阵范围内的总产量。
    下面两图分别代表采样点分布和绘制的亩产量等值线图在这里插入图片描述
    在这里插入图片描述

    那么问题来了,25个采样点的数据实在太稀疏了,截取范围后,根本无法与20x20的矩阵点乘求总产量,那么这个时候就需要用到griddata函数了。
    x,y可以看做是大的采样范围,v是每个点的属性,比如亩产量,某一污染物浓度。xq,yq是在这个采样范围内,需要截取的范围,比如我在一个省随即采了好多样本点,但我需要计算省内某块区域的值,这个时候就可以对全省采样数据插值,截取想要的区域,并可以调整xy间隔,构成新的矩阵。
    当然,最关键的一点来了,如果这25个数据不构成5x5矩阵怎么办,比如我只有空间分布的21个数据?

    上面说到interp2的插值数据必须是矩形域,gridata可以是分散(非均匀)样本点,所以依然适用这种情况。
    下面的代码是用原始经纬度、亩产量是用矩阵表示的。当原始数据不是矩形域时,可以采用Excel表的形式输入MATLAB里面进行运算。

    x=[ 34.2,34,34,34,34;
        33,33.2,33,33,33;
        32,32.7,32.5,32.6,32;
        31.5,31,31,31,31;
        30,30,30,30,30];   
    y=[ 121,122,123,124,125;
        121,122.1,123,124,125;
        121.3,122,123,124,125;
        121,122,123,124,125;
        121.1,122.3,123.6,124,125];
    z=[ 1,2,5,3,4;
        4,2,3,5,6;
        7,5,3,6,4;
        4,2,8,6,4;
        7,4,8,6,5];
    %为了便于理解,将原始数据详细写了出来
    contourf(y,x,z)
    figure()
    xrange=34:-0.1:32;
    yrange=122:0.1:124;
    [Y,X] = meshgrid(yrange,xrange);%xrange、yrange可以看做是截取的范围,插值并且将其改为20*20的矩阵
    M =griddata(x,y,z,X,Y);
    imagesc(M)%20*20新的矩阵
    

    二、gridatan使用

    gridatan和gridata用法类似,不同的还是,gridatan可以实现更高维度的插值。
    比如我选择一个湖泊,在湖泊选了几十个不同位置采样点,每一个采样点又根据水深采了不同深度的水样,计算营养盐含量。
    采样点x,y,z实际上分布在三维空间中,且不均匀分布,加上营养盐含量就成了四维分散数据。这个时候想看某一经度的截面营养盐分布,gridatan就可以帮助我们实现对整个湖泊营养盐的插值,实现这一目的。

    展开全文
  • Topsis法(matlab

    2021-01-29 17:36:43
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Topsis是什么?二、使用步骤1.引入库2.读入数据总结 前言 充分利用原始数据的信息 解决层次分析法的局限: ...import nu
  • MATLAB代码:经MATLAB R2019a实现 一、步骤详解 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as ...
  • matlab 如何读入超大文本文件

    千次阅读 2018-02-02 17:01:28
    可以看出,这个封装好的函数,只要给定文件的路径及文件名就可以顺利成为我们所需的数据。但是,当文件大小超过百M时,这个方法就显得吃力,耗时过久。于是返璞归真,引入“textscan” 其格式如下: mFID = fopen
  • 文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 有频率为5Hz、15Hz、30Hz的叠加余弦信号,设计低通滤波器保留5Hz的频率分量,...1.引入库 代码如下(示例): import numpy as np import
  • 一、引入import matplotlib as mplimport matplotlib.pyplot as plt二、配置1、画图接口Matplotlib 有两种画图接口:(1)一个是便捷的 MATLAB 风格接口(2)功能更强大的面向对象接口【推荐,下文都以这个为例】在面向...
  • matplotlib API入门使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,matplotlib API函数位于matplotlib.pyplot模块中,其通常的引入...
  • 这篇博客写一下Matplotlib简介及图表窗口,Matplotlib是一个Python版的matlab绘图接口,以2D为主,支持Python,numpy,pandas基本数据结构,运营高效且有较丰富的图表库 使用Matplotlib的时候首先要引入它的包 ...
  • 大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下:#coding:utf-8import numpy as npimport matplotlib.pyplot as pltimport pylab## 绘制该文件中的数据## 需要引入pylab库,里面用到的函数和...
  • 大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下:#coding:utf-8import numpy as npimport matplotlib.pyplot as pltimport pylab## 绘制该文件中的数据## 需要引入pylab库,里面用到的函数和...
  • Matplotlib入门 北理工嵩天老师python数据分析与展示 单元4随堂笔记 Matplotlib库的使用 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。...import matplotlib.pyplot as plt #引入模块 p...
  • 一、引入 import matplotlib as mpl import matplotlib.pyplot as plt 二、配置 1、画图接口 Matplotlib 有两种画图接口: (1)一个是便捷的 MATLAB 风格接口 (2)功能更强大的面向对象接口【推荐,下文都以这个...
  • 使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,matplotlib API函数位于matplotlib.pyplot模块中,其通常的引入约定是:import ...
  • matplotlib API入门使用matplotlib的办法最常用的方式是pylab的ipython,pylab模式还会向ipython引入一大堆模块和函数提供一种更接近与matlab的界面,matplotlib API函数位于matplotlib.pyplot模块中,其通常的引入...
  • pyplot模块包含了常用的matplotlib API函数,其通常的引入约定为 import matplotlib.pyplot as plt;figure, Matplotlib的图像均位于figure对象中,不能通过一个空的Figure绘图;subplot,figu...
  • Python读取txt某几列绘图

    千次阅读 2018-01-24 22:09:06
    晚上帮同学用Python脚本绘图,大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下: #coding:utf-8 ...## 需要引入pylab库,里面用到的函数和MATLAB里的非常类似 def plotData(x
  • pandas 是基于numpy构建的库,加上numpy,主要用于科学...一般引入规定:In [105]: from pandas import Series,DataFrameIn [106]: import pandas as pdIn [107]: import numpy as npSeries类似一维数组,有一组数...
  • 大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下:#coding:utf-8import numpy as npimport matplotlib.pyplot as pltimport pylab## 绘制该文件中的数据## 需要引入pylab库,里面用到的函数和...
  • 大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下:#coding:utf-8import numpy as npimport matplotlib.pyplot as pltimport pylab## 绘制该文件中的数据## 需要引入pylab库,里面用到的函数和...
  • 大概需求是读取一个txt文件的两列分别作为x和y的值,绘图即可,代码如下:#coding:utf-8import numpy as npimport matplotlib.pyplot as pltimport pylab## 绘制该文件中的数据## 需要引入pylab库,里面用到的函数和...
  • 晚上帮同学用Python脚本绘图,大概...## 需要引入pylab库,里面用到的函数和MATLAB里的非常类似 def plotData(x, y): length = len(y) pylab.figure(1) pylab.plot(x, y, 'rx') pylab.xlabel('x') pylab.ylabel('y
  • 路径规划算法学习Day3

    千次阅读 多人点赞 2020-12-13 15:14:57
    提示:本文会用matlab实现Dijkstra算法,并且会分享一些函数用法的链接,也是本人学习得来,供大家参考,批评指正 一、Dijkstra算法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 ...
  • Matplotlib库是数据可视化最常使用的库,它是受matlab启发而开发。matpliotlib.pyplot是绘制可视化图形的子库,相当于快捷方式。我们可以直接 import matplotlib.pyplot as plt 引入此模块。 我们先来尝试一下这个...
  • Matplotlib库的介绍

    2020-06-04 10:45:20
    Matplotlib是python中一个非常优秀的数据可视化第三方库。可绘制坐标系,饼状图等等一百多种形式的效果。 Matplotlib库由各种可视化类构成,内部结构复杂,受matlab启发。 Matplotlib.pyplot是绘制各类可视化图形的...
  • matplotlib的一些基本设置的记录

    千次阅读 2017-11-05 14:41:28
    她不仅提供了快速的方式可视化Python中的数据,而且提供流行的图形格式的选择。 pyplot 是非常接近 Matlab 的一个函数库,承担了大部分的绘图任务。我们可以通过以下命令引入pyplot. from matplotlib ...
  • Matplotlib库入门

    千次阅读 2017-07-03 22:32:45
    Matplotlib库: Python优秀的数据可视化第三方库。 Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab...import matplotlib.pyplot as plt (plt引入模块的别名)。   基本使用 # -*- coding: utf-8 -*-

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

matlab引入数据import

matlab 订阅