3

我有一个二进制向量,例如

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]

任何帮助将非常感激。

4

3 回答 3

5

首先构造一个零向量,然后使用find

z = false(size(x));
z(find(x, 4)) = true;
于 2013-11-03T07:46:00.740 回答
3

不需要find二进制向量。改用cumsum

>> z = x;
>> z(cumsum( z, 2 ) > 4) = 0;

该解决方案(与基于 - 的答案不同)可以一次find处理一堆这样的二进制向量(您所需要的只是验证它在正确的维度上工作)。cumsum

于 2013-11-03T09:46:57.647 回答
0

尝试以下操作:

z=x;
A=find(z);
z(A(5:end))=0;

这里的想法是使所有,但首先是 n,1 到 0

于 2013-11-03T09:21:33.023 回答