【发布时间】:2013-10-23 04:30:12
【问题描述】:
给定一个矩阵,我想逐行遍历并找到任何低于阈值的值,将其称为 T。在行中的值低于 T 的第一个实例之后,该行中的所有后续卷应该将它们的值更改为 0。这很容易迭代几个循环,但我想通过矩阵运算来做到这一点,因为我有 50k 行和 100 列。
具体来说,我想采用以下 T=.5 的输入矩阵:
1 1 1 1 0 1 1 1 1
1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1
并获得以下信息:
1 1 1 1 0 0 0 0 0
1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0
任何帮助将不胜感激(再次提醒我想尽可能避免使用循环)
谢谢 瑞恩
【问题讨论】:
-
您是否希望将低于阈值的第一个值也设置为零?
-
其实我只是要制作一个全新的矩阵。值可能不同的地方。因此,只要该值高于阈值,就可以说是 C,下面的第一个值是 R,然后是 0。所以对输出矩阵的更好描述是: C C C C R 0 0 0 0 C C C C C C C C C C C R 0 0 0 0 0 0 0
-
不知道如何在那里制作线条。
-
在这种情况下,也许这对你有用:
cumsum(m < T, 2) + (m < T),这里你的C是我的0,你的R是我的2,你的0是我的@987654327 @? -
或者
~cumsum(m < T, 2) + 2*(m < T)切换1s和0s