我有一个二进制向量,例如:
x = [1 1 1 0 0 1 0 1 0 0 0 1]
我想保留前 4 个元素为“1”(用“0”代替其余元素)。在我的示例中,结果向量应为:
z = [ 1 1 1 0 0 1 0 0 0 0 0 0]
任何帮助将非常感激。
首先构造一个零向量,然后使用find
:
z = false(size(x));
z(find(x, 4)) = true;
不需要find
二进制向量。改用cumsum
!
>> z = x;
>> z(cumsum( z, 2 ) > 4) = 0;
该解决方案(与基于 - 的答案不同)可以一次find
处理一堆这样的二进制向量(您所需要的只是验证它在正确的维度上工作)。cumsum
尝试以下操作:
z=x;
A=find(z);
z(A(5:end))=0;
这里的想法是使所有,但首先是 n,1 到 0