我有一个矩阵data
,我保存到data_Buffer
。 <=-999
中的所有值data
都被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
问题/要求:
1)在data_Buffer
中,如何查看连续搜索NaN
值并将其替换为之前的非NaN
值?该算法应从第一列开始并向最后一列移动(即,如果第10列中有NaN
,则应将其替换为第9列中的有效值。
2)如果有多个连续的NaN
值,则应将其替换为行中先前的非NaN
值。
答案 0 :(得分:1)
我使用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