matlab用interp2方法进行插值消除nan的问题
一个矩阵数据里面含有非常多的nan值,想用interp2的方法进行线性插值,消除这些nan,不知道该怎么做,求教大家?具体一点,假设这个矩阵是b=2NaNNaN1NaN2...
一个矩阵数据里面含有非常多的nan值,想用interp2的方法进行线性插值,消除这些nan,不知道该怎么做,求教大家?
具体一点,假设这个矩阵是
b =
2 NaN NaN 1
NaN 2 1 1
2 NaN 1 NaN 展开
具体一点,假设这个矩阵是
b =
2 NaN NaN 1
NaN 2 1 1
2 NaN 1 NaN 展开
1个回答
展开全部
因为出现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插值是可以解决问题的
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区域
所以插值结果应该不会有太大问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询