2017-08-16 12 views
0

私はこのマトリックスを有する:他の列にある数字に基づいて列を新しい配列に保持する方法は?

aux333=[2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 70 ; 
     3 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 208; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     2 0 ; 
     0 37 ; 
     0 0 ; 
     0 0 ; 
     0 0 ; 
     0 0 ] 

を、私は、最初の列は、新しい配列(aux3final)はaux333の第2列を受信する、ゼロと異なる場合、いくつかのコードを書きたいです。

私はこのようにそれを書いてみました:

for j=1:length(aux333) 
    if aux333(j,1)==2 | aux333(j,1)==3 
    aux3final(j)=aux333(j,2);%%aux3final tá com dimensão 296, devia estar com dimensão 69 
    end 

が、これはまったく機能していません。どうやって進める?

元のコードは私が投稿したものよりも大きく、影響を与える変数がいくつかあります。

+0

もしあれば、2番目の列全体をコピーしますか?最初の列の要素はゼロではありませんか?または、最初の列の要素がゼロでない2列目の行のみをコピーしますか? –

+0

あなたのコードから、あなたは後者を望むようです。必要な出力が得られているはずです。 (元のコードで 'end'を使うのを忘れたのですか?)簡単な方法は' aux3final = aux333(logical(aux333(:1))、2) 'です。 –

+0

あなたの質問をきれいにするには、読者がスクロールする必要がないように、サンプルテーブルのいくつかの行を削除することをお勧めします。それを保つ[最小限で完全で、検証可能な例](https://stackoverflow.com/help/mcve) –

答えて

1

サルダールが指摘したように、得られたベクター(aux3final)は

1を有していなければならないかどうかは明らかではない)入力ベクトル(aux333)

%find entries of interest 
flg_valid=aux333(:,1)>0; 
%alloc output 
aux3final=zeros(size(aux333,1),1); 
%copy index depending 
aux3final(flg_valid)=aux333(flg_valid,2); 

又は

と同じ長さ2)興味のある項目の長さがある

%extract only entries of interest 
aux3final=aux333(flg_valid,2); 
関連する問題