我有一个二进制矢量,例如:
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]
非常感谢任何帮助。
答案 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是