2014-10-18 43 views
1

假設我有數據a = 1x112;我的範圍值是b = [5 30; 35 54; 56 70; 78 99]。如何爲該範圍創建零個值。如何爲距離值創建零個數據matlab

我想要的結果是從1:4 = 0,5:30 = 1,31:34 = 0,35:54 = 1,55 = 0,56:70 = 1, 71: 77 = 0,78:99 = 1.

任何人都請幫助我。謝謝。

回答

2

嘗試bsxfun,逐元素的and隨後any:如果你有大的數據

any(bsxfun(@le,a,b(:,2)) & bsxfun(@ge,a,b(:,1)),1) 

可能會使用大量的內存。

+0

確定得到它。但結果是隻讀開始到結束值。意味着如果我使用上面的例子,我得到結果5:99 = 1其他是0 – danjoro 2014-10-18 03:03:22

+0

顯示和示例'a'與你的'b'一起運行命令。它適用於你描述的方式。而'a'是一個行向量。 – chappjc 2014-10-18 03:14:17

+0

ok.get it。 Tq非常 – danjoro 2014-10-18 03:39:52

0

另一種可能性:利用這樣b必然有秩序,

result = mod(sum(bsxfun(@lt, a, [b(:,1); b(:,2)+1])), 2);