matlab用interp2方法进行插值消除nan的问题

一个矩阵数据里面含有非常多的nan值,想用interp2的方法进行线性插值,消除这些nan,不知道该怎么做,求教大家?具体一点,假设这个矩阵是b=2NaNNaN1NaN2... 一个矩阵数据里面含有非常多的nan值,想用interp2的方法进行线性插值,消除这些nan,不知道该怎么做,求教大家?
具体一点,假设这个矩阵是
b =

2 NaN NaN 1
NaN 2 1 1
2 NaN 1 NaN
展开
 我来答
dukinkin
2015-01-07 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:955万
展开全部
因为出现nan的点是随机分布的,不好用interp2插值
用griddata插值是可以解决问题的

b =[2 NaN NaN 1
NaN 2 1 1
2 NaN 1 NaN];

s=size(b);
ind=find(~isnan(b));
[i j]=ind2sub(s,ind);
v=b(ind);
[ii jj]=ndgrid(1:s(1),1:s(2));
ib=griddata(i,j,v,ii,jj);

不过注意,在角点的nan值是不能消除的
更多追问追答
追问
你好,我想请问一下这种函数的话用的是什么方法进行插值的,因为是对缺值很多的影像处理,这样插得的值的方法会不会有问题?
追答
griddata主要的算法是
首先根据数据点产生三角网格
然后可以选择用'linear‘(线性),'cubic'(立方),'nearst'(最近邻)办法插值
缺省设置是'linear‘(线性)

所以以上程序的插值是基于三角网格的线性方法插值
只要缺值的nan点附近有数据,那么就会用附近的数据插值计算得nan点的值
我估计虽然图像nan点很多,但是应该不会有很多连成一大片的nan区域
所以插值结果应该不会有太大问题
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式