2017-03-18 10 views
1

私はこのような行列を持つ:選択行

a=[ 20 30 45 55; 
    25 25 50 60; 
    100 29 36 52; 
    28 33 48 62]; 

私はこの新しい行列の行は最初の行の±10の範囲内にあるように、別の行列を持つようにしたいですaマトリックス。

b=[20 30 45 55; 
    25 25 50 60; 
    28 33 48 62] 

答えて

3

は(あなたはMATLABの2016B以降を持っている場合、またはimplicit expansionbsxfunを使用して、最初の行からすべての行を減算しabs olute値を取る:
は、例えば、この場合には、我々は、マトリックスbを持っています。次にany~とし、aの行に最初の行の±10範囲外の値が含まれていない行を探します。最後にlogical indexingを使用してこれらの行を選択します。

コード:a与えられたため

b = abs(bsxfun(@minus, a,a(1,:))); 
b = a(~any(b>10,2),:); 

出力:

b = 
    20 30 45 55 
    25 25 50 60 
    28 33 48 62 
+0

2つの以上の質問...私は行列の選択された行のインデックスを知りたい場合はどのような私はできこれを書いてください...そして、もし私が行列の行を分類したいとしたら、例えばm行の行(m行n列の行列)が同じ範囲にあるのです – Masoud