Matlab 矩阵插值:使用 for 循环处理每一行的 NaN 值
在 Matlab 中,可以使用 for 循环和内置函数 'isnan' 来对矩阵的每一行的所有 NaN 值进行插值。可以使用内置函数 'interp1' 来进行插值操作。以下是一个示例代码:
% 创建一个包含 NaN 值的矩阵
matrix = [1 NaN 3; NaN 5 6; 7 8 NaN];
% 循环遍历每一行
for i = 1:size(matrix, 1)
% 获取当前行的数据
row = matrix(i,:);
% 检查是否有 NaN 值
nanIndices = find(isnan(row));
% 如果有 NaN 值,则进行插值
if ~isempty(nanIndices)
% 获取非 NaN 值的索引
nonNanIndices = find(~isnan(row));
% 使用 interp1 函数进行插值
row(nanIndices) = interp1(nonNanIndices, row(nonNanIndices), nanIndices);
% 更新矩阵中的当前行
matrix(i,:) = row;
end
end
% 打印插值后的矩阵
disp(matrix);
以上代码将对矩阵 'matrix' 中的每一行进行循环遍历,检查是否有 NaN 值。如果有 NaN 值,则使用 'interp1' 函数对非 NaN 值进行插值,并将插值后的值更新到矩阵中的当前行。最后,打印插值后的矩阵。
原文地址: https://www.cveoy.top/t/topic/nDAc 著作权归作者所有。请勿转载和采集!