从MATLAB中的二进制向量(0,1)中选择1个值中的前n个

时间:2013-11-03 07:40:39

标签: matlab vector

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

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]

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

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

z = false(size(x));
z(find(x, 4)) = true;

答案 1 :(得分:3)

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

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

此解决方案(与基于find的答案不同)可以同时处理一堆这样的二进制向量 (您只需要验证cumsum是否正常工作尺寸)。

答案 2 :(得分:0)

请尝试以下操作:

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

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