0

行列には 2 つの行といくつかの列があり、最初の行列には 1 と 0 の交互の文字列が含まれています。このバイナリを決定として使用して、その下の情報を 2 つの cell 配列のいずれかにコピーしたいと考えています。これは、IF 条件を使用した反復、または while ループを使用した反復によって実行できることを理解していますが、クリーンアップに問題があります。

たとえば、

mat = [ 1 1 1 0 0 1 1 0 0 0 0 1 1 1 ;...
        1 2 3 4 5 6 7 1 2 3 4 5 6 7 ]

「1」用と「0」用の 2 つの cell 配列を出力したいと思います。

1 2 3
6 7
5 6 7

と:

4 5
1 2 3 4 
4

1 に答える 1

0

これを行うにはいくつかの方法があります。ループを使用している可能性があります。ただし、組み込みの検索機能をうまく利用することもできます。以下は、あなたの例に基づくサンプルソリューションです。

'1s' の場合、ここでは、最初の行から '1' のインデックスを取得したいと思います。

on_array= mat(2, find(mat(1,:)));

または@H.Musterによって提案されたように

on_array= mat(2, mat(1,:)==1);

「0s」の場合、ここでは、最初の行から「0」のインデックスを取得したいと考えています。

off_array = mat(2, find(mat(1,:)==0));

または@H.Musterによって提案されたように

off_array= mat(2, mat(1,:)==0);

出力形式(あなたが望むもの)については、何をすべきか知っていると確信しています。幸運を。

于 2013-03-12T07:49:41.533 に答える