已知100×100矩阵,matlab怎么去除矩阵中小于某值的数,并利用剩下的数值将矩阵进行插值?

现在编一个矩阵,如4×4矩阵
[ 1.5 2.5 3.5 2.7
2.5 2.6 3.6 2.4
3.2 2.7 2.5 2.5
1.8 2.8 2.6 2.7 ]
怎么将矩阵中小于2.5的值去除,并利用剩下的数值将矩阵进行插值,使得矩阵较为平滑,已知矩阵的各个点是连续的,所以要是有跳跃点就肯定是不对的。求大神指导

程序如下,先将下面函数保存,然后给出X与d,再运行函数,注意函数名是保存的m文件名(如果嫌麻烦,可直接截取函数主体内容运行):
%------------------------------------------------
function Y=F(X,d) %X为目标矩阵,需给定; d为小于的某值

N=numel(X); %矩阵X的元素个数
a=find(X<d); %找出X中小于d的元素的序号(具体可help find)
%下面插值,采用最简单的移动平均,即需要插值的点的值改为其前面两个与后面两个(共4个)元素的平均值;
%但是最前面与最后面两个如果小于d,无法按上面方法插值,简单期间,采用原值;
b=a(find(a>2&a<(N-1)));
X(b)=(X(b-1)+X(b-2)+X(b+1)+X(b+2))/4; %插值,将需要替换的位置按上述方式插值。

Y=X;
%------------------------------------------------

不过这样有个问题是插值时,由于移动平均是按元素排序一个个替换的,所以有的需要替换的元素的后面的两个元素有可能都小于阈值,所以导致替换后的值仍可能小于阈值。但这种情况相对可能性较小,如果出现了,将所得的矩阵再用上面的函数做一次变换,应该就能排除这种情况。 当然,楼主如果自己有更好的插值想法,也可以以此为基础自行设定了。
温馨提示:答案为网友推荐,仅供参考
相似回答