0
A = [0 0 1 2 3 4 5 0 0;
     1 2 3 4 5 0 0 0 0;
     0 0 0 1 2 3 4 5 0;
     0 0 0 0 1 2 3 4 5]

次に、上記のマトリックスから、値が3より大きい同じ列ではない値1を考慮します。ただし、値が「1」の同じ列の値が1つしかない場合は、問題ありません。

だから私は結果が

res=2。

それらは、1行目と2行目にある値「1」です。

それで、それを解決するためのコードは何ですか?ありがとう..

4

1 に答える 1

1

私があなたがここで尋ねていることに従えば。1特定の列に値が含まれているかどうか、および3それ以上の値が含まれていないかどうかを知りたいとします。

これで始められるはずです:

 for n = 1:size(A,2)
     if(~numel(find(A(:,n)>2)) && numel(find(A(:,n)==1)))
         disp('found')
     end
 end

ここで何が起こっているかを分析します。

ループは、マトリックスの各列を通過するように設計されていますA

numelparens()内の行列にある要素の数を返します。

find比較基準に一致する要素のインデックスを返します。最初のケースでは、2より大きい要素を探しています。1に等しい2番目の要素では、値の列(ベクトル)のみを送信しているため、numel呼び出しの代わりにベクトルのみを取得します。

numelそのベクトル内のアイテムの数を数え、その数を返すだけです。ベクトルが空の場合、数値は0です。また、がif0をfalseとして解釈するという事実を使用して、2より大きい値が列にない場合でも、numel内にあるものを実行しないようにします。if

したがって、列のsの数を知りたい場合1は、ifステートメントのnumel(find(A(:、n)== 1))部分を使用するだけです。

于 2012-08-06T12:29:45.013 に答える