匿名用户
1级
2016-10-25 回答
你好,我没有找到符合你条件的方法,
但是我想出了一个办法可以解决你的问题。首先确定你要有统计工具箱,因为要用到nanmean()这个函数
做法是首先把你这个矩阵的inf去掉,改成NaN 假设你的矩阵在x
x(find(isinf(x)))=NaN
然后设定一个维数比x大的矩阵
a= ones(size(x)+2)
a(find(a==1))=NaN
a(2:end-1,2:end-1)=x
这样你就会有一个矩阵:
NaN NaN NaN NaN NaN NaN NaN NaN
NaN 35 1 6 26 19 24 NaN
NaN 3 32 7 NaN 23 25 NaN
NaN 31 9 2 22 27 20 NaN
NaN 8 NaN 33 17 10 15 NaN
NaN 30 5 34 12 14 16 NaN
NaN 4 36 29 13 18 11 NaN
NaN NaN NaN NaN NaN NaN NaN NaN
类似于这样的
这时候你就可以找NaN了,搜索范围在a(2:end-1,2:end-1)
如
[r,c]=find(isnan(a(2:end-1,2:end-1)))
不知道为什么这个r和c比实际的行和列小1,所以我们可以直接用
你要做的就是
for i = 1:length(r)
a(r(i)+1,c(i)+1) = nanmean(reshape(a(r(