将矩阵中的nan替换为特定的值

2次浏览(过去30天)
哈贾尔Alshaikh
哈贾尔Alshaikh 2022年11月15日
评论道: 哈贾尔Alshaikh2022年11月15日
我不知道为什么下面的代码不能工作
我有一个矩阵F它有一些nan项,我把这个矩阵的最后一行保存为 N_lastrow。 那么我想替换这一行中的所有nan项,如果F是4*4矩阵,如果 N_lastrow (4,4)= nan,然后直接将其替换为f中所有剩余条目的平均值 N_lastrow (1,2)=nan,我们必须用F(3,3)的值替换它,如果它也是nan,我将用F(2,4)替换它,如果它也是nan,那么将它替换为整个剩余条目的平均值。
这就是代码
f;
N_lastrow=f(n,:);%其中n为f中的行数
k = 1: n
如果 isnan (N_lastrow (k))
如果 k = = n
N_lastrow (k) = nanmean (f, “所有”
打破
结束
m = n: 1
如果 m - 1 > 0
N_lastrow (k) = f (m - 1 k + 1)
如果 ~ isnan (f (m - 1 k + 1))
打破
结束
其他的
N_lastrow (k) = nanmean (f, “所有”
结束
结束
其他的
N_lastrow (k) = f (n, k)
结束
结束
N_lastrow

答案(1)

凯文·霍利
凯文·霍利 2022年11月15日
你能说清楚你想要什么吗?在我看来,你想要的是这样的:
F = [1 2 3 2;4 5 6 1;7 8 9 2];
f(4,4) = NaN
f = 4×4
1 2 3 2 4 5 6 1 7 8 9 2 0 0 0 NaN
N_lastrow = f(最终,:)
N_lastrow = 1×4
0 0 0 NaN
如果isnan (f (4, 4))
F (4,4) = F (3,3);
如果3) isnan (f(3日)
F (4,4) = F (2,4);
如果isnan (f (4, 4))
F (4,4) = mean(F,“omitnan”);
结束
结束
结束
f
f = 4×4
1 2 3 2 4 5 6 1 7 8 9 2 0 0 0 9
N_lastrow = f(最终,:)
N_lastrow = 1×4
0 0 0 9
1评论
哈贾尔Alshaikh
哈贾尔Alshaikh 2022年11月15日
不。如果 N_lastrow (1,n)是直接的 F (n,n) = mean(F,'omitnan');
所以f(4,4)=f(3,3)不对
请检查一下我写的代码
我的问题是为什么楠仍然出现后,我运行我的代码?

登录评论。

2022世界杯八强谁会赢?


释放

R2022a

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map