假设我有数据a = 1x112;我的范围值是b = [5 30; 35 54; 56 70; 78 99]。如何为该范围创建零值。
我想,结果范围从1:4 = 0,5:30 = 1,31:34 = 0,35:54 = 1,55 = 0,56:70 = 1, 71:77 = 0,78:99 = 1.
任何人都请帮助我。谢谢。
答案 0 :(得分:2)
尝试bsxfun
,元素明智and
后跟any
:
any(bsxfun(@le,a,b(:,2)) & bsxfun(@ge,a,b(:,1)),1)
如果您有大数据,可能会占用大量内存。
答案 1 :(得分:0)
另一种可能性:利用b
必然具有的顺序,
result = mod(sum(bsxfun(@lt, a, [b(:,1); b(:,2)+1])), 2);