【Matlab】如何对二维矩阵进行线性/非线性插值?
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】如何对二维矩阵进行线性/非线性插值?相关推荐
- matlab找出二维矩阵中最大值的位置或者最小值的位置
matlab寻找最大值或者最小值是通过max和min命令 对应二维矩阵寻找最大元素就是max(max(A)),注意二维矩阵要写两个max 找对应位置用find函数 举个例子: >> A=[ ...
- MATLAB对一个二维矩阵画三维图
1 准备好二维矩阵,比如我这有个3x16的矩阵叫SFW1 2 画三维图,一句代码就OK mesh(SFW1) 3 结果如下
- MATLAB 如何在二维矩阵中快速找到最大值的位置
网上找了找方法都比较冗长,适合于复杂的矩阵,但对于简单的二位矩阵找最大值有没有简易方法? 直接贴代码: [m,j]=max(max(ave_pre)):%%得到的是整个矩阵最大值的值和纵坐标 [m,i ...
- matlab 三围温度,matlab 两个二维温度场平面如何通过插值立体重建三维温度场
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 两个平面xyz是已知的x=-20:5:20; y=-20:5:20; z 是0和10两个. z=0 温度分布是T =1.0e+003 * 0.9118 ...
- matlab 把图像变成二维的,matlab图像怎么变成二维矩阵
求:matlab二维直方图图像分割程序.. 我给你个网站``里面的教学很详细~~希望能帮到你~~~~反正里面的软件教程很多``就是不知道有没你要找的``如果有~~给我加分哈``http://tech. ...
- 【Matlab】一种超简单的二维矩阵降维方法
1.Introduction Matlab里图像处理时,经常会把一维数组转二维数组,二维数组转一维,如下图所示: 一般经常使用的函数是 reshape ,可以在不同维度之间进行转换,不过需要事先计算数 ...
- matlab 二维矩阵变成一维矩阵
matlab 二维矩阵变成一维矩阵 1.一维变二维: https://blog.csdn.net/qq_40584593/article/details/90691276 reshape 2.a(:) ...
- matlab如何将三维转为二维_matlab 三维矩阵转二维矩阵(转)
matlab中三维数组顺序是:行.列.页.二维数组只有行.列.如果两只之间赋值,有一个维数缩减问题需要注意. 例如: A3是三维数组,A3(:,:,1)=[1,2,3;4,5,6]; A3(:,:,2 ...
- matlab三维数组与二维矩阵相乘问题
Matlab三维数组与二维矩阵相乘问题 近来在搞一个改进近场music算法的仿真问题,用matlab进行二维搜索的时候写了很多for循环,导致运行速度极慢.考虑到matlab语言本身的矩阵运算特点,改 ...
最新文章
- 使用socket获取网卡信息
- 上下左右连续滚动图片的JS代码
- 51Nod 1298 圆与三角形相交 计算几何
- ViewPager实现页面切换
- 洗澡或游泳等导致的耳朵进水的解决方案
- tomcat应用服务器有哪些,手写一个Tomcat应用服务器
- 验证部分表单是否重复
- iOS 图形编程总结
- 撩开Docker的面纱
- 计算机python指什么_Python是什么?
- window10进入“服务”的三种方式
- Docker教程小白实操入门(21)--如何备份、恢复数据卷
- 我不曾忘记的初心-大厂小厂
- JNDI:对java:comp/env的研究
- PMP和PRINCE2到底有什么区别?哪个含金量更高?
- RHEL7设置默认启动图形化界面
- unity 电梯_unity官方demo学习之Stealth(十七)电梯移动设定
- Word转PDF方法怎么转?这三种Word转PDF方法你得知道
- Java Attach机制实现原理
- 表达式计算器-iExpr
热门文章