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」です。
それで、それを解決するためのコードは何ですか?ありがとう..
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」です。
それで、それを解決するためのコードは何ですか?ありがとう..
私があなたがここで尋ねていることに従えば。1
特定の列に値が含まれているかどうか、および3
それ以上の値が含まれていないかどうかを知りたいとします。
これで始められるはずです:
for n = 1:size(A,2)
if(~numel(find(A(:,n)>2)) && numel(find(A(:,n)==1)))
disp('found')
end
end
ここで何が起こっているかを分析します。
ループは、マトリックスの各列を通過するように設計されていますA
。
numel
parens()内の行列にある要素の数を返します。
find
比較基準に一致する要素のインデックスを返します。最初のケースでは、2より大きい要素を探しています。1に等しい2番目の要素では、値の列(ベクトル)のみを送信しているため、numel
呼び出しの代わりにベクトルのみを取得します。
numel
そのベクトル内のアイテムの数を数え、その数を返すだけです。ベクトルが空の場合、数値は0です。また、がif
0をfalseとして解釈するという事実を使用して、2より大きい値が列にない場合でも、numel
内にあるものを実行しないようにします。if
したがって、列のsの数を知りたい場合1
は、ifステートメントのnumel(find(A(:、n)== 1))部分を使用するだけです。