我有一个 21x19 矩阵B
矩阵的每个索引都是 1,0 或 -1。我想计算每一行和每一列的出现次数。执行列计数很容易:
Colcount = sum( B == -1 );
Colcount = sum( B == 0 );
Colcount = sum( B == 1 );
然而,访问另一个维度来获得行数被证明是困难的。可以在一个语句中访问它会很棒。然后我需要使用 fprintf 语句将结果打印到屏幕上。
我有一个 21x19 矩阵B
矩阵的每个索引都是 1,0 或 -1。我想计算每一行和每一列的出现次数。执行列计数很容易:
Colcount = sum( B == -1 );
Colcount = sum( B == 0 );
Colcount = sum( B == 1 );
然而,访问另一个维度来获得行数被证明是困难的。可以在一个语句中访问它会很棒。然后我需要使用 fprintf 语句将结果打印到屏幕上。
默认情况下sum
对矩阵的列进行操作。您可以通过为 sum 指定第二个参数来更改此设置。例如:
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
例如,如果要分别计算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
以便您可以轻松地打印矢量。