arrays - 根据一定的值向左选择矩阵中的n个元素

标签 arrays matlab matrix

我有一个逻辑矩阵 A,我想在给定固定距离的情况下选择每个 1 值左侧的所有元素。假设我的距离是 4,我想(例如)用固定值(比如 2)替换 A 中每个 1 左侧的所有 4 个单元格。

A= [0 0 0 0 0 1 0
   0 1 0 0 0 0 0
   0 0 0 0 0 0 0
   0 0 0 0 1 0 1]

B= [0 2 2 2 2 1 0
   2 1 0 0 0 0 0
   0 0 0 0 0 0 0
   2 2 2 2 2 2 1]

在 B 中是我想要的,同时考虑覆盖(B 中的最后一行),以及在我的 1 的左侧只有 1 个值而不是 4 作为固定搜索距离(第二行)的情况。

最佳答案

这个可爱的单线怎么样?

n = 3;
const = 5;
A = [0 0 0 0 0 1 0;
     0 1 0 0 0 0 0;
     0 0 0 0 0 0 0;
     0 0 0 0 1 0 1]

A(bsxfun(@ne,fliplr(filter(ones(1,1+n),1,fliplr(A),[],2)),A)) = const

结果:

A =

     0     0     5     5     5     1     0
     5     1     0     0     0     0     0
     0     0     0     0     0     0     0
     0     5     5     5     5     5     1

这里有一些解释:

Am = fliplr(A);                      %// mirrored input required
Bm = filter(ones(1,1+n),1,Am,[],2);  %// moving average filter for 2nd dimension
B = fliplr(Bm);                      %// back mirrored
mask = bsxfun(@ne,B,A)               %// mask for constants
A(mask) = const

关于arrays - 根据一定的值向左选择矩阵中的n个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23867537/

相关文章:

javascript - 如何从数组中删除所需的对象并使用 .forEach 将它们添加到另一个数组中?

matlab - 如何从 matlab 中的结构字段名称生成变量?

c - C中的结构矩阵

matlab - 求矩阵中行的排列

Javascript 只为数组中的最后一项设置属性

python - 数组包括来自 C++ 中的 python 的范围

c# - 图像分析-纤维识别

matlab - 如何合并/交错 2 个矩阵?

java - 通过矩阵平移 vector

Javascript - 如何从数组中获取非零值?