【18-03-24】Matlab 数据分析

[18-03-24] Matlab 数据分析

1° 数据插值

一般地,从各种试验得来的数据总是有一定的数量,而利用插值技术能够从有限的数据中获取系统整体的状态,因此,数据插值在各行各业,特别是信号处理领域内有着广泛的应用。

常用数据插值函数

函数中较常用的就是进行基本插值的 interp 系列函数,其中 interp1interp1q 函数比较起来,后者在处理 X 为单调递增的向量,Y 为列向量或者行数同 X 向量长度的矩阵进行插值计算的时候,速度较快,而且仅能进行线性插值。

interp1 函数一般的用法为 yi = interp1(x, y, xi, method)

其中:

  • x 和 y 为原始数据,xi 为需要计算的插值点。method 可以为插值计算指定相应的算法,为字符串类型,其取值可以为 nearest linear spline cubic pchip v5cubic

若进行插值运算时,xi 的取值超过了 x 的范围,则需要进行外插运算,这个时候需要在使用函数的时候指定参数 extrap,即函数的使用方法为yi = interp1(x, y, xi, method, 'extrap')

插值方法 说明
'linear' 线性插值。这是默认的插值方法
'nearest' 最近邻居插值
'next' 下一个邻居插值
'previous' 先前的邻居插值
'pchip' 保形分段三次插值
'cubic' 和'pchip'一样
'v5cubic' 在MATLAB使用三次卷积
'makima' 修改的Akima立方Hermite插值
'spline' 使用无结节结束条件的样条插值

二维插值运算函数的使用方法类似一维插值运算函数的使用方法,同样也可以在使用函数的同时指定相应的算法:nearest linear cubic spline 等。与一维插值不同的是,这里使用的插值算法都需要进行双次运算,所以也可以在算法选择时使用 bilinear 或者bicubic关键字指定相应的算法。在例子中,对这几种插值算法进行了比较,并用 contour 进行了可视化处理:

  clear
  clc
  %COMPARE_INTERP 不同插值运算的比较
  % 原始数据
  [x,y] = meshgrid(-3:1:3);
  z = peaks(x,y);
  figure(1); clf
  surfc(x,y,z);
  title('原始数据')
  % 进行插值运算 
  [xi, yi] = meshgrid(-3:0.25:3);
  zi1 = interp2(x,y,z,xi,yi,'nearest');
  zi2 = interp2(x,y,z,xi,yi,'linear');
  zi3 = interp2(x,y,z,xi,yi,'cubic');
  zi4 = interp2(x,y,z,xi,yi,'spline');
  % 通过可视化结果比较
  figure(2)
  subplot(2,2,1);surf(xi,yi,zi1); title('二维插值 - ''nearest''')
  subplot(2,2,2);surf(xi,yi,zi2); title('二维插值 - ''linear''')
  subplot(2,2,3);surf(xi,yi,zi3); title('二维插值 - ''cubic''')
  subplot(2,2,4);surf(xi,yi,zi4); title('二维插值 - ''spline''')
  % 可视化结果
  figure(3)
  subplot(2,2,1);contour(xi,yi,zi1); title('二维插值 - ''nearest''')
  subplot(2,2,2);contour(xi,yi,zi2); title('二维插值 - ''linear''')
  subplot(2,2,3);contour(xi,yi,zi3); title('二维插值 - ''cubic''')
  subplot(2,2,4);contour(xi,yi,zi4); title('二维插值 - ''spline''')

2° 曲线拟合

回归分析是曲线拟合的常用方法,最小二乘法是回归分析法的一种方法。

回归分析法曲线拟合:

  clear
  clc
  t = [0 .3 .8 1.1 1.6 2.3]';
  y = [0.5 0.82 1.14 1.25 1.35 1.40]';
  plot(t,y,'r*')
  grid on
  X = [ones(size(t))  t  t.^2]
  A = X\y
  T = (0:0.1:2.5)';
  Y = [ones(size(T))  T  T.^2]*A;
  plot(T,Y,'-',t,y,'o'), grid on
  legend('Fitting','Origin')
  hold on;        % 保留之前绘制的曲线
  X = [ones(size(t))  exp(-t)  t.*exp(-t)]
  A = X\y
  T = (0:0.1:2.5)';
  Y = [ones(size(T))  exp(-T)  T.exp(-T)]A;
  plot(T,Y,'-',t,y,'o'), grid on
  legend('Fitting', 'Origin')

做最小二乘拟合:polyfit polyval

  clear
  clc
  x = 0:.1:10;
  y = sin(x)+cos(2*x);
  % 5次多项式拟合
  k5 = polyfit(x,y,5);    % 得到5次多项式系数
  y5 = polyval(k5, x);    % 得到离散的数值
  % 11次多项式拟合
  k11 = polyfit(x,y,11);
  y11 = polyval(k11, x); 
  % 绘制数据曲线
  plot(x, y, 'g', x, y5, 'r', x, y11, 'b') 
  % 标注
  title('Curve Fitting', 'Fontsize',14)
  legend('Original Curve', '5th order', '11th order','Location','southeast')
  set(findobj('Type', 'line'), 'LineWidth', 2) 

运用次方越多,和函数越接近,但是运算量也会变大。如果你的数据精度够高,可以尝试高次的拟合;反之,若你只需要获得数据的大趋势,低次的拟合可能效果更好。总而言之,Matlab 只是工具,关键看对知识的理解和如何运用公式。

3° 图形界面曲线拟合

Matlab 提供了基本的曲线拟合图像工具,利用这个界面可以完成以下工作:

  • 使用三次样条曲线(cubic spline)或最高10阶的多项式拟合数据
  • 对一组给定的数据同时绘制多条拟合曲线
  • 绘制拟合残差曲线
  • 查看拟合的数值结果
  • 对拟合曲线求值(内插或外推)
  • 用拟合数值结果和残差的范数标注图形
  • 把拟合的结果保存到 MATLAB工作区

使用基本的曲线拟合工具,以 Matlab 自带的 Demo 为例 help census :

  clear
  clc
  load census         % 美国每十年的人口数据
  plot(cdate,pop,'ro');

figure 窗口点击 工具基本拟合 ,后续可以选择中心化并缩放 X 数据、拟合方式、绘制残差图、显示残差模等,之后 保存到工作区

  whos
  fit

之后可以继续扩展使用工具箱,计算到 2050 年的计算结果。有时候工具箱会出现小问题,重新启动即可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容