1.Introduction

最近又遇到了矩阵插值(重采样)的问题,在最开始写博客的时候就写了篇关于 Excel 重采样的文章,不过在逐渐熟悉 Matlab 的过程中,还是决定看看能不能编程自动实现,不出所料,Matlab果然是万能的。如下图所示,本文以3×3为例,将其插值到9×9。

2.Materials and methods

首先,最简单的插值即线性插值,可以把上图的过程理解为两步。
(1)对每两列之间求均值并插入其中,可多次重复
(1)对每两行之间求均值并插入其中,可多次重复

如果每次都一步步手动计算那真的是累死了(上面这张图做的我更爱Matlab了),所以我们接下来使用 Matlab 全自动完成上述操作。代码如下。

A = [1 2 3;4 5 6;7 8 9];    % 生成3×3原始矩阵x = 1:4:9;                  % 原始矩阵插值后的x轴坐标位置,即第1、5、9个
y = 1:4:9;                 % y轴坐标含义同上
[X,Y] = meshgrid(x,y);     % 过渡x = 1:9;                   % 插值后矩阵的x轴数值,即[1 2 3 4 5 6 7 8 9]
y = 1:9;                   % y轴坐标含义同上
[Xq,Yq] = meshgrid(x,y);   % 过渡B = interp2(X,Y,A,Xq,Yq);  % 生成线性插值后的矩阵

3. Results and discussion

代码运行结果如下图,代码中具体变量含义和格式,可以直接在工作区查看,在此不做赘述。


本文开篇提到线性插值是最为简单的一种方法,下面介绍下非线性插值:

B = interp2(X,Y,A,Xq,Yq);           % 生成线性插值后的矩阵
C = interp2(X,Y,A,Xq,Yq,'cubic');    % 生成非线性插值后的矩阵

你没有看错,就是把之前代码的最后一行代码,稍作修改。为了更好的展示效果,我们以 magic(3) 矩阵为例,将其插值到9×9。



通过二维矩阵可能很难感受到两个矩阵的区别(B vs. C),接下来将其转为三维热度图,如下图 。
同时,如果你只想对列之间进行插值,行间保持不变。代码做相应修改即可,如下所示。

4. Conclusion

本文提出的方法可以对任意大小的二维矩阵进行任意次的线性/非线性插值,对比Excel效果大幅度提高。但是在对原始矩阵插值时需要计算下现有坐标插值后的对应坐标,需要读者具备小学三年级以上的数学水平~

猜你喜欢:

【Matlab】如何对二维矩阵进行线性/非线性插值?相关推荐

  1. matlab找出二维矩阵中最大值的位置或者最小值的位置

    matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...

  2. MATLAB对一个二维矩阵画三维图

    1 准备好二维矩阵,比如我这有个3x16的矩阵叫SFW1 2 画三维图,一句代码就OK mesh(SFW1) 3 结果如下

  3. MATLAB 如何在二维矩阵中快速找到最大值的位置

    网上找了找方法都比较冗长,适合于复杂的矩阵,但对于简单的二位矩阵找最大值有没有简易方法? 直接贴代码: [m,j]=max(max(ave_pre)):%%得到的是整个矩阵最大值的值和纵坐标 [m,i ...

  4. matlab 三围温度,matlab 两个二维温度场平面如何通过插值立体重建三维温度场

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 两个平面xyz是已知的x=-20:5:20; y=-20:5:20; z 是0和10两个. z=0 温度分布是T =1.0e+003 * 0.9118   ...

  5. matlab 把图像变成二维的,matlab图像怎么变成二维矩阵

    求:matlab二维直方图图像分割程序.. 我给你个网站``里面的教学很详细~~希望能帮到你~~~~反正里面的软件教程很多``就是不知道有没你要找的``如果有~~给我加分哈``http://tech. ...

  6. 【Matlab】一种超简单的二维矩阵降维方法

    1.Introduction Matlab里图像处理时,经常会把一维数组转二维数组,二维数组转一维,如下图所示: 一般经常使用的函数是 reshape ,可以在不同维度之间进行转换,不过需要事先计算数 ...

  7. matlab 二维矩阵变成一维矩阵

    matlab 二维矩阵变成一维矩阵 1.一维变二维: https://blog.csdn.net/qq_40584593/article/details/90691276 reshape 2.a(:) ...

  8. matlab如何将三维转为二维_matlab 三维矩阵转二维矩阵(转)

    matlab中三维数组顺序是:行.列.页.二维数组只有行.列.如果两只之间赋值,有一个维数缩减问题需要注意. 例如: A3是三维数组,A3(:,:,1)=[1,2,3;4,5,6]; A3(:,:,2 ...

  9. matlab三维数组与二维矩阵相乘问题

    Matlab三维数组与二维矩阵相乘问题 近来在搞一个改进近场music算法的仿真问题,用matlab进行二维搜索的时候写了很多for循环,导致运行速度极慢.考虑到matlab语言本身的矩阵运算特点,改 ...

最新文章

  1. 使用socket获取网卡信息
  2. 上下左右连续滚动图片的JS代码
  3. 51Nod 1298 圆与三角形相交 计算几何
  4. ViewPager实现页面切换
  5. 洗澡或游泳等导致的耳朵进水的解决方案
  6. tomcat应用服务器有哪些,手写一个Tomcat应用服务器
  7. 验证部分表单是否重复
  8. iOS 图形编程总结
  9. 撩开Docker的面纱
  10. 计算机python指什么_Python是什么?
  11. window10进入“服务”的三种方式
  12. Docker教程小白实操入门(21)--如何备份、恢复数据卷
  13. 我不曾忘记的初心-大厂小厂
  14. JNDI:对java:comp/env的研究
  15. PMP和PRINCE2到底有什么区别?哪个含金量更高?
  16. RHEL7设置默认启动图形化界面
  17. unity 电梯_unity官方demo学习之Stealth(十七)电梯移动设定
  18. Word转PDF方法怎么转?这三种Word转PDF方法你得知道
  19. Java Attach机制实现原理
  20. 表达式计算器-iExpr

热门文章

  1. UNITY 画布的粗浅理解
  2. 简单介绍--TOSCA自动化测试工具
  3. 算法学习之路|最小生成树—kruskal
  4. Hibernate Cascade 属性
  5. Windows下MySql安装【图文】
  6. 查看windows下系统信息
  7. Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
  8. linux 压缩解压归档
  9. 杭电1166敌兵布阵
  10. nyoj 10 skiing(DAG上的最长路,备忘录方法)