1

给定一个矩阵,我想逐行遍历并找到任何低于阈值的值,称之为 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

任何帮助将不胜感激(再次提醒我想尽可能避免使用循环)

谢谢瑞恩

4

1 回答 1

5

怎么样:

m(cumsum(m < T, 2)==1) = 0   %// Note that ==1 is the same as just logical(), you can test to see if there is a relevant performance difference for you, otherwise just pick the more readable one

或者,如果您需要将第一个值保留在阈值以下,那么可能:

I = [false(size(m,1), 1) , logical(cumsum(m < T, 2))]
m(I(:, 1:end-1)) = 0
于 2013-10-15T11:30:36.327 回答