2016-09-23 5 views
-1

私は、抽出したい特定の要素の集合を含む3x3x3の行列を持っています。しかし、要素を選択した後、要素を行列で並べ替えることを望みます。例は次のとおりです。MATLAB:選択した行列要素から行列を構築する

a(1,:,:)=1*[1 2 3; 4 5 6; 7 8 9]; 
a(2,:,:)=2*[1 2 3; 4 5 6; 7 8 9]; 
a(3,:,:)=3*[1 2 3; 4 5 6; 7 8 9]; 

a(a>1.0) 

条件a(a>1.0)は私の要素のベクトルを与えるが、その元の順序次の行列でそれらを注文する方法はありますか?

+2

がどのように彼らの「オリジナル」の順序を定義していると他の値を交換するのですか?任意の行列を必要としないようにするには、行列は長方形でなければならず、これを保証する方法はありません。 – excaza

+1

'a(a> 1.0)'を実行すると、列メジャーオーダーでベクトルが返されます。つまり、返される要素は、この条件を満たす値が上から下、左からその順番を維持している各スライスに入ります。これがあなたが望む注文でない場合は、あなたの投稿を編集して、それらを表示する順序を明示します。 – rayryeng

+1

あなたは '(a> 1.0)。* a'を探していますか? – beaker

答えて

0

あなたの基準を満たしていない要素にはどうしますか?

あなたは簡単にするためにa(a<=1) = nan;

0

と仮定2-Dマトリックスのような何かができる:

a(mod(a, 2) == 0) 

a = [1 2 3; ... 
    4 5 6]; 

がのが唯一のでも値を取ると、その形でそれらを維持しましょう

お望みの場合があります:

2 
4 6 

しかし、マトリックスの世界では、空のスペースを持つそのようなマトリックスはありますか?はい、まばらな行列です。しかし、疎な行列には、が足りないだけではないことに注意する必要があります。

だから、私の提案はNaN

b = a; % just make a duplicate 
b(mod(b, 2) == 1) = nan 
b = 
    nan 2 nan 
     4 nan  6  
関連する問題