mrk*_*102 2 matlab interpolation image-processing matrix computer-vision
我知道如何从矩阵中找到负值的索引。
matrix(matrix<0) = %something should be done;
Run Code Online (Sandbox Code Playgroud)
但是不知道如何将它们的值替换为恰好为正的最接近的索引值。
此处最近的索引应位于观察索引所在的同一行中。
如果行中没有具有正值的索引,则应将 0 插入到该行的每个索引中。
如果同一行中与观察到的索引最接近的索引不止一个,请选择正确的索引。
我正在处理 1003x1170 单矩阵。因此,如果解决方案不会带来如此多的开销,那将是最好的。
例如,
[-255 4 6;
-5 -4 5;
-400 3 6;
-6 -7 -8;
3 -5 4]
Run Code Online (Sandbox Code Playgroud)
成为
[4 4 6;
5 5 5;
3 3 6;
0 0 0;
3 4 4]
Run Code Online (Sandbox Code Playgroud)
您可以使用该fillmissing函数执行此操作,如下所示:
NaN。这是必需的,因为对于single或double输入,fillmissing将NaN条目视为缺失值。fillmissing与'nearest'选项一起使用并沿维度操作2。如果有两个等距的数据值,fillmissing 显然会选择右边的一个(我没有找到这个文档,我也无法从源代码中确认)。NaN值(对应于不包含非负值的行)替换为0.matrix = [-255 4 6; -5 -4 5; -400 3 6; -6 -7 -8; 3 -5 4]; % data
matrix(matrix<0) = NaN; % step 1
matrix = fillmissing(matrix, 'nearest', 2); % step 2
matrix(isnan(matrix)) = 0; % step 3
Run Code Online (Sandbox Code Playgroud)