【发布时间】:2015-01-16 07:30:22
【问题描述】:
我有一个包含大约 70,000 行的数组,如下所示:
A = [ 1 2 3 4 5 6 0 723 1 22
1 2 3 4 5 7 0 NaN 2 10
etc.. ]
我想将数组中的所有 NaN 值替换为与 NaN 值在同一列中的前一个值,这样我就可以得到这样的结果:
B = [ 1 2 3 4 5 6 0 723 1 22
1 2 3 4 5 7 0 723 2 10
etc.. ]
由于数组有大约 70,000 行,我猜想某种循环将是实现这一目标的最佳方式。使用以下内容:
for ii = 1:size(A,2)
I = A(1,ii);
for jj = 2:size(A,1)
if isnan(A(jj,ii))
A(jj,ii) = I;
else
I = A(jj,ii);
end
end
end
我已经能够创建一个循环,将整行替换为前一行,但我不确定如何修改它以仅针对 NaN 值。任何帮助将不胜感激!
【问题讨论】:
标签: arrays matlab matrix replace nan