gpt4 book ai didi

matlab - 如何找到具有负值的索引并将该值替换为最接近的正值索引值?

转载 作者:行者123 更新时间:2023-12-02 07:14:42 33 4
gpt4 key购买 nike

我知道如何从矩阵中查找具有负值的索引。

matrix(matrix<0) = %something should be done;

但不知道如何用最接近的正数索引值替换它们的值。

  1. 这里最近的索引应该与观察到的索引位于同一行。

  2. 如果该行中没有具有正值的索引,则应将该行的每个索引内插 0。

  3. 如果同一行中有多个与观察到的索引最接近的索引,请选择正确的一个。

  4. 我正在处理 1003x1170 单个矩阵。因此,解决方案最好不要带来太多开销。

例如,

[-255  4  6; 
-5 -4 5;
-400 3 6;
-6 -7 -8;
3 -5 4]

成为

[4 4 6; 
5 5 5;
3 3 6;
0 0 0;
3 4 4]

最佳答案

您可以使用 fillmissing 来完成此操作函数如下:

  1. NaN 替换负值。这是必需的,因为对于 singledouble 输入,fillmissing 会将 NaN 条目视为缺失值。
  2. fillmissing'nearest' 选项结合使用,并沿维度 2 进行操作。如果有两个等距的数据值,fillmissing显然会选择右边的一个(我还没有找到这个文档,而且我也无法从源代码)。
  3. 将所有剩余的 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

关于matlab - 如何找到具有负值的索引并将该值替换为最接近的正值索引值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59742108/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com