• MATLAB学习笔记(六)——MATLAB数据分析与多项式计算


    (一)数据处理统计

    一、最大值和最小值

    1、求向量的最大值和最小值

    y=max(X);    %返回向量X的最大值存入y,如果X中含有复数则按模最大的存入y
    [y,I]=max(X);%返回向量X的最大值存入y,如果X中含有复数则按模最大的存入y;最大值的序号存入I。

         求最小值min的用法与max完全相同。

    2、求矩阵的最大值和最小值

    max(A);         %返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值
    [Y,U]=max(A);   %返回行向量A和U,Y向量记录A的每列的最大值,Y记录每列的最大值的序号。
    max(A,[],dim);  %dim取1时,就跟max(A)完全相同,dim取2时,函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。

    3、两个矩阵或矩阵对应元素的比较

    U=max(A,B);  %A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或者矩阵,U的每个元素等于A,B对应元素的最大值。
    U=max(A,n);  %n是一个标量,结果U是与A同型的向量或者矩阵,U的每个元素等于A对应元素和n的较大值。

    二、求和与求积

    sum(X);  %返回向量X各元素的和。
    prod(X); %返回向量X各元素的乘积。
    sum(A); %返回一个行向量,其第i个元素是A的第i列的元素和
    prod(A); %返回一个行向量,其第i个元素是A的第i列的元素乘积
    sum(A,dim); %当dim=1时,与sum(A)相同,dim=2时,返回一个列向量,其第i个元素是A的第i行各元素之和。
    prod(A,dim); %当dim=1时,与sum(A)相同,dim=2时,返回一个列向量,其第i个元素是A的第i行各元素之乘积。

    三、平均值和中值

    mean(X);     %返回向量X的算术平均值
    median(X);   %返回向量X的中值
    mean(A);     %返回一个行向量,其第i个元素是A的第i列的算术平均值
    median(A);   %返回一个行向量,其第i个元素是A的第i列的中值。
    mean(A,dim);    %dim=1;与mean(A)相同,dim=2时,返回一个列向量,其第i个元素是A的第i行的算术平均值。
    median(A,dim);  %dim=1;与median(A)相同,dim=2时,返回一个列向量,其第i个元素是A的第i行的中值。

    四、累加和与累乘和

    cumsum(X);     %返回向量X累加和向量
    cumprod(X);    %返回向量X累乘积向量
    cumsum(A);     %返回一个矩阵,其第i列是A的第i列的累加和向量
    cumprod(A);    %返回一个矩阵,其第i列是A的第i列的累乘积向量
    cumsum(A,dim); %dim=1时,等同于cumsum(A);dim=2时,返回一个矩阵,其第i行是A的第i行的累加和向量。
    cumprod(A,dim);%dim=1时,等同于cumprod(A);dim=2时,返回一个矩阵,其第i行是A的第i行的累乘积向量。

    五、标准方差和相关系数

    1、标准方差

    (1)样本标准方差:

                      image

    (2)总体标准方差:

                     image

    (3)MATLAB封装方法:

    Y=std(A,flag,dim);
    %A是向量时,返回一个标准方差。A是矩阵时,返回一个行向量,它的各个元素便是矩阵A各列的标准方差。
    %dim=1,取各列的标准方差,dim=2时,取各行的标准方差。
    %flag=0,取样本标准方差。flag=1,取总体标准方差
    %flag=0,dim=1,为缺省默认值。

    2、相关系数

    (1)定义:

    image

    (2)MATLAB封装方法:

    corrcoef(X);  %返回从矩阵X形成的一个相关系数矩阵,此系数矩阵的大小与X相同,每一列为当前列与每一列的相关系数的值。
    corrcoef(X,Y);%在这里X,Y为向量,与corrcoef(X,Y)的作用相同。

    六、排序

    [Y,I]=sort(A,dim);%dim=1对列排序,dim=2对行进行排序。Y为排序后的矩阵,I记录Y中元素在A的位置。
                      %sort函数为升序排序
    sort(A);  %对A的每列升序排序;
    -sort(-A);%对A的每列降序排序;

    (二)数据插值

    一、一维数据插值

    Y1=interp1(X,Y,X1,'method');
        %X,Y是已知的两个等长的向量,分别描述采样点和样本值。X1为一个向量或者标量,描述欲插值的点。Y1是一个X1等长的插值的结果
        %method为插值方法:
        %linear:线性插值,默认的插值方法。把与插值点靠近的两个数据点用直线连接,然后在直线上选取对应插值点的数据。
        %nearest:最近点插值,根据已知插值点与已知数据点的远近程度进行查插值。插值点有限选择比较近的数据点进行插值操作。
        %cubic:三次多项式插值,根据已知数据求出一个三次多项式,然后根据该多项式进行插值
        %spline:三次样条插值,在每个分段区间内构造一个三次多项式,使得其插值函数满组成插值条件外,还要求在各节点处具有光滑的条件。

    其中三次样条插值的效果最好,然后MATLAB中有一个专门用于三次样条插值的方法:

    Y1=spline(X,Y,X1);

    一个demo:

    X=6:2:18;
    Y=[18,20,22,25,30,28,24];
    X1=6.5:1:18.5;
    
    subplot(2,2,1);
    plot(X,Y,'b');
    hold on;
    Y1=interp1(X,Y,X1,'linear');
    plot(X1,Y1,'r');
    title('linear');
    
    subplot(2,2,2);
    plot(X,Y,'b');
    hold on;
    Y1=interp1(X,Y,X1,'nearest');
    plot(X1,Y1,'r');
    title('nearest');
    
    subplot(2,2,3);
    plot(X,Y,'b');
    hold on;
    Y1=interp1(X,Y,X1,'cubic');
    plot(X1,Y1,'r');
    title('cubic');
    
    subplot(2,2,4);
    plot(X,Y,'b');
    hold on;
    Y1=interp1(X,Y,X1,'spline');
    plot(X1,Y1,'r');
    title('spline');

    image

    可以看出最好的就是三次样条插值以及三次插值。

    二、二维数据插值

    Z1=interp2(X,Y,Z,X1,Y1,method');

    调用方法和格式都与一位数据插值相同。

    然后直接上个demo

    x=0:2.5:10;
    h=[0:30:60]';
    T=[95,14,0,0,0
        88,48,32,12,6
        67,64,54,48,41];
    xi=[0:0.1:10];
    hi=[0:60]';
    TI=interp2(x,h,T,xi,hi);
    surf(xi,hi,TI);
    shading interp;

    image

    (三)曲线拟合

    [P,S]=polyfit(X,Y,m)

      产生一个m次多项式P,以及在采样点的误差向量S,其中X,Y是两个等长向量,P是一个长度为m+1的向量,P的元素为多项式系数。

    (四)离散傅里叶变换

    一、离散傅里叶变换算法简介

    image

    二、离散傅里叶变换的实现

    (1)fft(X):返回向量X的离散傅里叶变换。设X的长度(即元素个数)为N,若N为2的幂次,则为以2为基数的快速傅里叶变换,否则为运算速度很慢的非2幂次

                      的算法。对于矩阵X,fft(X)应用于矩阵的每一列。

    (2)fft(X,N):计算N点傅里叶变换。它限定向量的长度为N,若X的长度小于N,则不足部分补上零;若大于N,则删去超出N的那些元素。对于矩阵X,它同样应

                         用于矩阵的每一列,只是限定了向量的长度为N。

    (3)fft(X,[],dim)或fft(X,N,dim):这是对于矩阵的调用格式,前者的功能与FFT(X)基本相同,而后者则与FFT(X,N)基本相同。知识当参数dim=1时,作用于X

                                                   的每一列,当dim=2时,作用于X的每一行。

    (五)多项式计算

    一、多项式的四则运算

    1、多项式的加减运算

         = =,其实就是直接将系数提出来弄成向量,然后进行相加减就好了。。

    2、多项式的乘法运算

    conv(P1,P2)  %P1,P2是两个多项式系数向量

    3、多项式的除法运算

    [Q,r]=deconv(P1,P2)   %Q返回的是P1除以P2的商式,r返回P1除以P2的余式。Q和r仍是多项式系数向量。

    二、多项式的导函数

    p=polyder(P)      %求多项式P的导函数
    p=polyder(P,Q)   %求P*Q的导函数
    [p,q]=polyder(P,Q)   %求P/Q的导函数,导函数的分子存入p,分母存入q。

    三、多项式的求值

    1、代数多项式求值

    Y=polyval(P,x)       %若x为一数值,则求多项式在该店的值;若x为向量或矩阵,则对向量或者矩阵的每个元素求多项式的值。

    2、矩阵多项式求值

    Y=polyvalm(P,x)

        以方阵为自变量求多项式的值。设A为方阵,P代表多项式。

    四、多项式求根

    1、求根方法

    x=roots(P)

    2、若已知全部根,则可以得到多项式

    P=poly(x)
  • 相关阅读:
    gevent实现基于epoll和协程的服务器
    用greenlet实现协程消费者生产者
    More is better(MST)(求无向图中最大集合元素个数)
    小希的迷宫(MST单棵树判断法则)
    畅通工程再续(MST)
    畅通工程再续
    畅通工程
    还是畅通工程(MST)
    Minimum Inversion Number
    Who Gets the Most Candies?(线段树 + 反素数 )
  • 原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4289999.html
Copyright © 2020-2023  润新知