0

21x19のマトリックスがありますB

行列の各インデックスは、1,0または-1のいずれかです。各行と列の出現回数をカウントしたいと思います。列カウントの実行は簡単です。

Colcount = sum( B == -1 );
Colcount = sum( B == 0  );
Colcount = sum( B == 1  );

ただし、行数を取得するために他のディメンションにアクセスすることは困難です。1つのステートメントでアクセスできれば素晴らしいと思います。次に、fprintfステートメントを使用して結果を画面に出力する必要があります。

4

2 に答える 2

6

デフォルトsumでは、行列の列で動作します。合計する2番目の引数を指定することでこれを変更できます。例えば:

A = [ 1 1 1; 0 1 0]; 
C = sum(A,2);
C -> [3; 1];

さらにtranspose、マトリックスを作成して同じ結果を得ることができます。

A = [ 1 1 1; 0 1 0]; 
C = sum(A');  % Transpose A, ie convert rows to columns and columns to rows
C -> [3 1];  % note that the result is transposed as well

そうすれば、呼び出しfprintfは簡単で、ベクトルを提供すると、そのベクトルの各インデックスの文字列が生成されます。

fprintf('The count is %d\n', C)

カウントは3です

カウントは1です

于 2012-10-07T02:39:56.763 に答える
3

SUMの2番目の入力引数は、合計する方向を示します。

たとえば、1行と列に沿った出現回数をそれぞれカウントし、を使用して結果を出力するfprintf場合は、次のように記述できます。

rowCount = sum(B==1,2);
colCount = sum(B==1,1); %# 1 is the default
fprintf('The rowCount of ones is\n%s\nThe colCount of ones is\n%s\n',...
   num2str(rowCount'),num2str(colCount))

num2strベクトルを簡単に印刷できるように使用していることに注意してください。

于 2012-10-07T02:39:53.830 に答える