zoukankan      html  css  js  c++  java
  • 8.MATLAB数据分析

    概述:

      

    1 clc;
    2 clear all;
    3 p1=[4 3 2 1];
    4 y=poly2sym(p1)  %由向量创建多项式
    5 disp(y)         %显示多项式

    1  多项式的求值与求根

    1 clc;
    2 clear all;
    3 p=[1 -1 -6];        %多项式的系数向量
    4 x=2:5;
    5 y=polyval(p,x)      %多项式在x处的值
    1 clc;
    2 clear all;
    3 x=[1 2 ;3 4];
    4 p=[2 3 4];
    5 y1=polyvalm(p,x) %采用polyvalm( )函数,以矩阵为计算单位
    6 
    7 x=[1 2 ;3 4];
    8 p=[2 3 4];
    9 y2=polyval(p,x) %采用polyval( )函数,以矩阵的元素为计算单位
    1 clc;
    2 clear all;
    3 p=[1 0 0 -1 -6];
    4 x1=roots(p)         %对多项式p求根
    5 
    6 x2=[4 5];
    7 y=poly(x2);         %求以x2为根的多项式
    8 y=poly2sym(y)

    2  多项式乘法和除法

     1 clc;
     2 clear all;
     3 p1=[4 2 0 5];               %缺少的幂次用0补齐
     4 p2=[5 8 1];
     5 
     6 %转成表达式
     7 y1=poly2sym(p1)
     8 y2=poly2sym(p2)
     9 
    10 p3=conv(p1,p2);             %多项式相乘
    11 y=poly2sym(p3)
    12 
    13 %定义一个变量
    14 syms x
    15 p1=sym2poly(4*x^3+2*x^2+5)
    16 p2=sym2poly(5*x^2+8*x+1)
    17 p3=conv(p1,p2);             %多项式相乘
    18 y=poly2sym(p3)

    3  多项式的导数和积分

     1 clc;
     2 clear all;
     3 p1=[4 3 2];
     4 p2=[2 2 1];
     5 y1=polyder(p1);%对多项式p1求导 
     6 y1=poly2sym(y1)
     7 
     8 y2=polyder(p1,p2); %对多项式p1和p2的乘积求导
     9 y2=poly2sym(y2)
    10 
    11 [q,d]=polyder(p1,p2);%对多项式p1除以p2的商求导
    12 q=poly2sym(q)
    13 d=poly2sym(d)
    1 clc;
    2 clear all;
    3 p1=[3 2 2];
    4 y1=polyint(p1,3); %对多项式p1进行积分,常数项为3
    5 y1=poly2sym(y1)
    6 y2=polyint(p1); %对多项式p1进行积分,常数项为0
    7 y2=poly2sym(y2)

    4  多项式展开

     1 clc;
     2 clear all;
     3 b=[1 -1 -7 -1];%分子多项式
     4 a=poly([1;5;6]);%分母多项式
     5 [r,p,k]=residue(b,a) %进行多项式b/a展开
     6 [b1,a1]=residue(r,p,k);%通过余数、极点和常数项来求多项式b1/a1
     7 b1=poly2sym(b1)
     8 a1=poly2sym(a1)
     9 
    10 b=[1 -1 -7 -1];%多项式a有三重根
    11 a=poly([1;1;1]);%分母多项式
    12 [r,p,k]=residue(b,a) %进行多项式b/a展开

    5  多项式拟合

     1 clc;
     2 clear all;
     3 x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];
     4 y=[1 2 3 5 6 7 6 5 4 1];
     5 p5=polyfit(x,y,5);%5阶多项式拟合
     6 %在x处求值
     7 y5=polyval(p5,x);
     8 p5=vpa(poly2sym(p5),5)%显示5阶多项式
     9 
    10 p9=polyfit(x,y,9);%9阶多项式拟合
    11 %求值
    12 y9=polyval(p9,x);
    13 
    14 figure;%画图显示
    15 plot(x,y,'bo');
    16 hold on;
    17 plot(x,y5,'r:');
    18 plot(x,y9,'g--');
    19 legend('原始数据','5阶多项式拟合','9阶多项式拟合');
    20 xlabel('x');
    21 ylabel('y');

    6  曲线拟合图形用户接口

    7  一维插值

     1 clc;
     2 clear all;
     3 x=0:0.2:2;
     4 y=(x.^2-3*x+5).*exp(-3*x).*sin(x);
     5 xi=0:0.03:2;                            %要插值的数据
     6 yi_nearest=interp1(x,y,xi,'nearest');   %临近点插值
     7 yi_linear=interp1(x,y,xi);              %默认为线性插值
     8 yi_spine=interp1(x,y,xi,'spine');       %三次样条插值
     9 yi_pchip=interp1(x,y,xi,'pchip');       %分段三次Hermite插值
    10 yi_v5cubic=interp1(x,y,xi,'v5cubic');   %MATLAB5中三次多项式插值
    11 figure;                                 %画图显示
    12 hold on;
    13 subplot(231);
    14 plot(x,y,'ro');
    15 title('已知数据点');
    16 subplot(232);
    17 plot(x,y,'ro',xi,yi_nearest,'b-');
    18 title('临近点插值');
    19 subplot(233);
    20 plot(x,y,'ro',xi,yi_linear,'b-');
    21 title('线性插值');
    22 subplot(234);
    23 plot(x,y,'ro',xi,yi_spine,'b-');
    24 title('三次样条插值');
    25 subplot(235);
    26 plot(x,y,'ro',xi,yi_pchip,'b-');
    27 title('分段三次Hermite插值');
    28 subplot(236);
    29 plot(x,y,'ro',xi,yi_v5cubic,'b-');
    30 title('MATLAB5中三次多项式插值');
     1 clc;
     2 clear all;
     3 x=0:1.1:8;
     4 y=sin(x);
     5 n=2*length(x);  %增采样1倍
     6 yi=interpft(y,n);%采用一维快速傅立叶插值
     7 xi=0:0.55:8.3;%要插值的数据
     8 figure;%画图显示
     9 hold on;
    10 plot(x,y,'ro',xi,yi,'b-');
    11 legend('原始数据','插值后结果');

    8  二维插值

     1 clc;
     2 clear all;
     3 [x,y]=meshgrid(-4:0.8:4);                   %原始数据
     4 z=peaks(x,y);
     5 [xi,yi]=meshgrid(-4:0.2:4);                 %插值数据
     6 zi_nearest=interp2(x,y,z,xi,yi,'nearest');  %临近点插值
     7 zi_linear=interp2(x,y,z,xi,yi);             %系统默认为线性插值
     8 zi_spline=interp2(x,y,z,xi,yi,'spline');    %三次样条插值
     9 zi_cubic=interp2(x,y,z,xi,yi,'cubic');      %三次多项式插值
    10 figure;                                     %数据显示
    11 hold on;
    12 subplot(321);
    13 surf(x,y,z);
    14 title('原始数据');
    15 subplot(322);
    16 surf(xi,yi,zi_nearest);
    17 title('临近点插值');
    18 subplot(323);
    19 surf(xi,yi,zi_linear);
    20 title('线性插值');
    21 subplot(324);
    22 surf(xi,yi,zi_spline);
    23 title('三次样条插值');
    24 subplot(325);
    25 surf(xi,yi,zi_cubic);
    26 title('三次多项式插值');

    9  样条插值

     1 clc;
     2 clear all;
     3 x=0:10;%原始数据
     4 y=sin(x);
     5 xi=0:.25:10;%插值数据
     6 yi=spline(x,y,xi);%三次样条插值
     7 pp=spline(x,y);%产生插值函数
     8 y1=ppval(pp,xi); %结果相同y1=yi
     9 y2=interp1(x,y,xi,'spline'); %结果相同y2=yi
    10 figure;%画图显示
    11 plot(x,y,'o',xi,yi);
    12 legend('原始数据','三次样条插值');

    10  高维插值

     

    1 clc;
    2 clear all;
    3 [x,y,z,v]=flow(10);
    4 [xi,yi,zi]=meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);
    5 vi = interp3(x,y,z,v,xi,yi,zi);                     % vi为25*40*25
    6 slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]);
    7 shading flat

    11  函数的极限

    1 clc;
    2 clear all;
    3 syms x;
    4 f=(3*x^2-1)/(3*x^2-2*x+3);
    5 y=limit(f,x,1)
    1 clc;
    2 clear all;
    3 syms x;
    4 f=x/(x-1)-2/(x^2-1);
    5 y=limit(f,x,1)
    1 clc;
    2 clear all;
    3 syms x;
    4 f=((x^x)^x);
    5 y=limit(f,x,0,'right')
  • 相关阅读:
    QPS 与 TPS 简介
    程序员需要学多门语言吗
    Docker 常用命令
    Dockerfile
    Docker-安装与部署
    Docker 容器相关技术
    java多线程 线程八锁
    java多线程 生产者消费者案例-虚假唤醒
    ConcurrentHashMap
    原子变量与CAS算法
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8889055.html
Copyright © 2011-2022 走看看