如何在逻辑上用 Matlab 中的先前非 NaN 值替换 NaN 值?

How to logically replace a NaN value with previous non-NaN value in Matlab?

我有一个矩阵 data,我正在将其保存到 data_Bufferdata 中的所有值 <=-999 都被 NaN 替换并存储在 data_Buffer 中。这是我的代码:

fid = fopen('D:\Data\');
data = fread(fid,'*int16');% 21 x 200 matrix
fclose(fid);

data(data <= -999) = nan;
s = size(data,2);
data_Buffer(:,k:k+s-1) = data;% This is a buffer to store the data matrix

Questions/requirements:

1) 在 data_Buffer 中,如何查看连续搜索 NaN 值并将其替换为之前的非 NaN 值?该算法应从第一列开始并向最后一列移动(即,如果第 10 列中有 NaN,则应将其替换为第 9 列中的有效值)。

2) 如果有多个连续的NaN值,则应将它们替换为该行中的前一个非NaN值。

我使用 solution provided by Matt at Matlab Central 解决了它,并针对行而不是列的情况修改了它:

function A = fill_nans(A)
% Replaces the NaN in each column with 
% previous non-NaN values.

for i = 1:size(A,1)
   I = A(1,i);
   for j = 2:size(A,2)
    if isnan(A(i,j))
        A(i,j) = I;
    else
        I  = A(i,j);
    end
end